XBMC Community Forum
New MythTV add-on using libcmyth - Printable Version

+- XBMC Community Forum (http://forum.xbmc.org)
+-- Forum: Development (/forumdisplay.php?fid=32)
+--- Forum: PVR Development (/forumdisplay.php?fid=136)
+--- Thread: New MythTV add-on using libcmyth (/showthread.php?tid=110694)



- opdenkamp - 2011-12-19 20:43

there's a problem with mysql dbs at the moment (assuming your branch is based on the current pvr tree), so don't use that right now. doesn't make sense for most setups anyway, since most people will be using the channel order from their backend(s)

if you are upgrading from standard XBMC, without PVR, remove Addons*.db, or you can't enable any add-ons. there's currently no clean upgrade path without removing that db file (unless you change the table by hand)


View mode - wavemaker - 2011-12-21 00:07

This an excellent addon!

What I do wonder, is it possible to view MythTV Live TV or Recordings in a different default "view mode" than other Videos in xbmc? My Recordings or Live TV is always too small and I do have to change the view mode each time I start viewing.


- cfetzer - 2011-12-21 01:02

I really miss the support of subtitles / episode names in the epg / recording view. It can sometimes get tricky to find the right episode when you have only the show name Wink

Therefore I created a patch that appends the subtiles to the title field (epg and recordings). This can only be a temporary solution until there's propper support for the relevant fields in the main pvr code. (see also FR https://github.com/opdenkamp/xbmc/issues/287)

Here's my patch:
https://github.com/fetzerch/xbmc/commit/520c16a3c078474a749fc7ae96084eb96b06b2be

Hope you like it!


- Jimmer - 2011-12-21 19:26

cfetzer Wrote:I really miss the support of subtitles / episode names in the epg / recording view. It can sometimes get tricky to find the right episode when you have only the show name Wink

Therefore I created a patch that appends the subtiles to the title field (epg and recordings). This can only be a temporary solution until there's propper support for the relevant fields in the main pvr code. (see also FR https://github.com/opdenkamp/xbmc/issues/287)

Here's my patch:
https://github.com/fetzerch/xbmc/commit/520c16a3c078474a749fc7ae96084eb96b06b2be

Hope you like it!

perhaps tsp could include this work in his branch? I've been stacking up Grey's Anatomy episodes for the gf and there's not much to differentiate them in a long list!

Now the addon is in a stable state, I'm hoping more little ui tweaks (like yours) will be the next development. Dteirney was starting to code along these lines before he retired his plugin. Makes something cool into something awesome!

Jimmer


- tsp42 - 2011-12-22 01:21

cfetzer: Thanks, I've cherry picked your patch and also synced the code with the latest XBMC PVR version.

Jimmer: I plan to shorten the missing feature list in the first post and hopeful get the code in a shape so I can sell my IPBOX PVR (this will require a working time-shift). I will try finishing the recording rules window next so it is possible to edit/add recording rules. And also the tuner selection code. I hope to get time to do this in the holidays.


- fiveisalive - 2011-12-22 02:32

tsp42 Wrote:cfetzer: Thanks, I've cherry picked your patch and also synced the code with the latest XBMC PVR version.

Jimmer: I plan to shorten the missing feature list in the first post and hopeful get the code in a shape so I can sell my IPBOX PVR (this will require a working time-shift). I will try finishing the recording rules window next so it is possible to edit/add recording rules. And also the tuner selection code. I hope to get time to do this in the holidays.

Just recompiled latest master, still pretty stable. However, I just noticed that in playback of recordings the position slider bar in the OSD doesn't move: it's stuck at "00:00:00". Also I thought that in the upstream PVR branch now supported "resume", but recording playback always start from the beginning.


- tsp42 - 2011-12-22 10:23

fiveisalive Wrote:Just recompiled latest master, still pretty stable. However, I just noticed that in playback of recordings the position slider bar in the OSD doesn't move: it's stuck at "00:00:00". Also I thought that in the upstream PVR branch now supported "resume", but recording playback always start from the beginning.

It is a known issue. Dushmaniac is looking into it.


- Novae - 2011-12-22 11:15

Code:
/usr/include/boost/utility/swap.hpp: In function ‘void boost_swap_impl::swap_impl(T&, T&) [with T = boost::unordered::detail::ptr_bucket*]’:
/usr/include/boost/utility/swap.hpp:51:5:   instantiated from ‘void boost::swap(T1&, T2&) [with T1 = boost::unordered::detail::ptr_bucket*, T2 = boost::unordered::detail::ptr_bucket*]’
/usr/include/boost/unordered/detail/buckets.hpp:366:13:   instantiated from ‘void boost::unordered::detail::buckets<A, Bucket, Node>::swap(boost::unordered::detail::buckets<A, Bucket, Node>&, boost::unordered::detail::false_type) [with A = std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, Bucket = boost::unordered::detail::ptr_bucket, Node = boost::unordered::detail::ptr_node<std::pair<const CStdStr<char>, std::vector<int> > >, boost::unordered::detail::buckets<A, Bucket, Node> = boost::unordered::detail::buckets<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, boost::unordered::detail::ptr_bucket, boost::unordered::detail::ptr_node<std::pair<const CStdStr<char>, std::vector<int> > > >, boost::unordered::detail::false_type = boost::unordered::detail::integral_constant<bool, false>]’
/usr/include/boost/unordered/detail/table.hpp:523:21:   instantiated from ‘void boost::unordered::detail::table<Types>::move_assign(boost::unordered::detail::table<Types>&, boost::unordered::detail::false_type) [with Types = boost::unordered::detail::map<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, CStdStr<char>, boost::hash<CStdStr<char> >, std::equal_to<CStdStr<char> > >, boost::unordered::detail::table<Types> = boost::unordered::detail::table<boost::unordered::detail::map<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, CStdStr<char>, boost::hash<CStdStr<char> >, std::equal_to<CStdStr<char> > > >, boost::unordered::detail::false_type = boost::unordered::detail::integral_constant<bool, false>]’
/usr/include/boost/unordered/detail/table.hpp:495:13:   instantiated from ‘void boost::unordered::detail::table<Types>::move_assign(boost::unordered::detail::table<Types>&) [with Types = boost::unordered::detail::map<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, CStdStr<char>, boost::hash<CStdStr<char> >, std::equal_to<CStdStr<char> > >, boost::unordered::detail::table<Types> = boost::unordered::detail::table<boost::unordered::detail::map<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, CStdStr<char>, boost::hash<CStdStr<char> >, std::equal_to<CStdStr<char> > > >]’
/usr/include/boost/unordered/unordered_map.hpp:156:13:   instantiated from ‘boost::unordered::unordered_map<K, T, H, P, A>& boost::unordered::unordered_map<K, T, H, P, A>::operator=(boost::rv<boost::unordered::unordered_map<K, T, H, P, A> >&) [with K = CStdStr<char>, T = std::vector<int>, H = boost::hash<CStdStr<char> >, P = std::equal_to<CStdStr<char> >, A = std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, boost::unordered::unordered_map<K, T, H, P, A> = boost::unordered::unordered_map<CStdStr<char>, std::vector<int> >]’
pvrclient-mythtv.cpp:273:41:   instantiated from here
/usr/include/boost/utility/swap.hpp:33:5: error: call of overloaded ‘swap(boost::unordered::detail::ptr_bucket*&, boost::unordered::detail::ptr_bucket*&)’ is ambiguous
/usr/include/boost/utility/swap.hpp:33:5: note: candidates are:
/home/mcu/src/xbmc-tsp-git/src/xbmc/lib/libPlatform/linux/os_posix.h:48:31: note: void swap(T&, T&) [with T = boost::unordered::detail::ptr_bucket*]
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../include/c++/4.6.2/bits/move.h:122:5: note: void std::swap(_Tp&, _Tp&) [with _Tp = boost::unordered::detail::ptr_bucket*]
/usr/include/boost/utility/swap.hpp: In function ‘void boost_swap_impl::swap_impl(T&, T&) [with T = long unsigned int]’:
/usr/include/boost/utility/swap.hpp:51:5:   instantiated from ‘void boost::swap(T1&, T2&) [with T1 = long unsigned int, T2 = long unsigned int]’
/usr/include/boost/unordered/detail/buckets.hpp:367:13:   instantiated from ‘void boost::unordered::detail::buckets<A, Bucket, Node>::swap(boost::unordered::detail::buckets<A, Bucket, Node>&, boost::unordered::detail::false_type) [with A = std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, Bucket = boost::unordered::detail::ptr_bucket, Node = boost::unordered::detail::ptr_node<std::pair<const CStdStr<char>, std::vector<int> > >, boost::unordered::detail::buckets<A, Bucket, Node> = boost::unordered::detail::buckets<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, boost::unordered::detail::ptr_bucket, boost::unordered::detail::ptr_node<std::pair<const CStdStr<char>, std::vector<int> > > >, boost::unordered::detail::false_type = boost::unordered::detail::integral_constant<bool, false>]’
/usr/include/boost/unordered/detail/table.hpp:523:21:   instantiated from ‘void boost::unordered::detail::table<Types>::move_assign(boost::unordered::detail::table<Types>&, boost::unordered::detail::false_type) [with Types = boost::unordered::detail::map<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, CStdStr<char>, boost::hash<CStdStr<char> >, std::equal_to<CStdStr<char> > >, boost::unordered::detail::table<Types> = boost::unordered::detail::table<boost::unordered::detail::map<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, CStdStr<char>, boost::hash<CStdStr<char> >, std::equal_to<CStdStr<char> > > >, boost::unordered::detail::false_type = boost::unordered::detail::integral_constant<bool, false>]’
/usr/include/boost/unordered/detail/table.hpp:495:13:   instantiated from ‘void boost::unordered::detail::table<Types>::move_assign(boost::unordered::detail::table<Types>&) [with Types = boost::unordered::detail::map<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, CStdStr<char>, boost::hash<CStdStr<char> >, std::equal_to<CStdStr<char> > >, boost::unordered::detail::table<Types> = boost::unordered::detail::table<boost::unordered::detail::map<std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, CStdStr<char>, boost::hash<CStdStr<char> >, std::equal_to<CStdStr<char> > > >]’
/usr/include/boost/unordered/unordered_map.hpp:156:13:   instantiated from ‘boost::unordered::unordered_map<K, T, H, P, A>& boost::unordered::unordered_map<K, T, H, P, A>::operator=(boost::rv<boost::unordered::unordered_map<K, T, H, P, A> >&) [with K = CStdStr<char>, T = std::vector<int>, H = boost::hash<CStdStr<char> >, P = std::equal_to<CStdStr<char> >, A = std::allocator<std::pair<const CStdStr<char>, std::vector<int> > >, boost::unordered::unordered_map<K, T, H, P, A> = boost::unordered::unordered_map<CStdStr<char>, std::vector<int> >]’
pvrclient-mythtv.cpp:273:41:   instantiated from here
/usr/include/boost/utility/swap.hpp:33:5: error: call of overloaded ‘swap(long unsigned int&, long unsigned int&)’ is ambiguous
/usr/include/boost/utility/swap.hpp:33:5: note: candidates are:
/home/mcu/src/xbmc-tsp-git/src/xbmc/lib/libPlatform/linux/os_posix.h:48:31: note: void swap(T&, T&) [with T = long unsigned int]
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../include/c++/4.6.2/bits/move.h:122:5: note: void std::swap(_Tp&, _Tp&) [with _Tp = long unsigned int]
make[1]: *** [pvrclient-mythtv.o] Error 1
make[1]: *** Waiting for unfinished jobs....
[ 80%] Building CXX object CMakeFiles/projectM.dir/ConfigFile.cpp.o
make[1]: Leaving directory `/home/mcu/src/xbmc-tsp-git/src/xbmc/xbmc/pvrclients/mythtv-cmyth'
make: *** [pvrclients] Error 2
make: *** Waiting for unfinished jobs....

The build is breaking on x86_64 Arch with boost 1.48.0. Any idea's?


- fiveisalive - 2011-12-22 22:38

I'm going to have to revise that "stable" assessment. I'm now getting semi-reproducible stalls upon restarting XBMC after an initially successful scan. The PVR loading hangs with the message:

Code:
PVR manager is starting up
Importing channels

Extract of log:

Code:
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_rcv_length: buffer is '16      ' ret = 16
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_rcv_string: string received 'REJECT'
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_rcv_string: string received '23056'
15:43:03 T:140013680342784   ERROR: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_conn_connect: asked for version 8, got version 23056
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_conn_destroy {
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_conn_destroy: shutdown and close connection fd = 27
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_conn_destroy }
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_connect_addr: connecting to 192.168.2.51:lds-distrib fd = 27
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_conn_create {
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_conn_create }
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_send_message
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_send_message: sending message '24      MYTH_PROTO_VERSION 23056'
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_rcv_length
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_rcv_length: buffer is '16      ' ret = 16
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_rcv_string: string received 'ACCEPT'
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_rcv_string: string received '23056'
15:43:03 T:140013680342784   ERROR: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_conn_connect: asked for version 23056, got version 23056
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)cmyth_conn_connect: agreed on Version 23056 protocol
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_send_message
15:43:03 T:140013680342784   DEBUG: AddOnLog: MythTV cmyth PVR Client: LibCMyth: (cmyth)__cmyth_send_message: sending message '31      ANN Playback htpc.localdomain 1'

...

15:43:03 T:140013669852928   DEBUG: PVRChannelGroup - Load - 105 channels loaded from the database for group 'All TV channels'
15:43:03 T:140013669852928   DEBUG: AddOnLog: MythTV cmyth PVR Client: GetChannels - radio: 0
15:43:03 T:140013669852928   DEBUG: AddOnLog: MythTV cmyth PVR Client: GetChannels - Done

When I try to select the "Live TV" source, I get:

Code:
"No PVR clients have been started yet. Wait for
Please check your configuration"



- schneberger - 2011-12-29 04:46

how do i check out this addon to a zip file that can be installed via the addon manager in xbmc , i am trying an pvr build for atv2 and would like to try this addon sin there aswell , i am not a builder so i can not realy complie a whole xbmc, just want to be able to install the addon =)