Author Topic: Picture Player / Plugin Workshop  (Read 5707 times)

hari

  • Administrator
  • LinuxMCE God
  • *****
  • Posts: 2428
    • View Profile
    • ago control
Picture Player / Plugin Workshop
« on: March 21, 2008, 03:12:43 am »
Notes from tschak's brainstorming and tutorial:

Quote
[2008/03/21 00:01:44] <TSCHAK> i'll whip together a gallery viewer
[2008/03/21 00:02:07] <hari> TSCHAK: cool
[2008/03/21 00:02:14] <hari> TSCHAK: anything i can assist with?
[2008/03/21 00:02:33] <hari> thats one of the features my SO is begging for ;)
[2008/03/21 00:02:47] <TSCHAK> hari, well.. this is my plan of attack:
[2008/03/21 00:03:03] <TSCHAK> hari, (1) look at the Photo_Screensaver Template and code... figure out what we can and can't use
[2008/03/21 00:04:49] <TSCHAK> hari, then (2) create the DCE for the plugin and player..
[2008/03/21 00:05:11] <TSCHAK> hari, then.. (3) try to figure out if there's anything we need to circumvent at the Media Plugin
[2008/03/21 00:05:26] <TSCHAK> hari, then (4) implement the first pass, grafting code from photo screen saver into the new plugin
[2008/03/21 00:05:55] <hari> TSCHAK: just looking at (1)
[2008/03/21 00:05:59] <TSCHAK> hari, basically (3) is going to be one of the hairier parts, because we need to figure out WHAT in the media plugin is hard coded with respect to photos
[2008/03/21 00:06:29] <TSCHAK> I dread (3)
[2008/03/21 00:06:31] <TSCHAK> ;-)
[2008/03/21 00:14:40] <TSCHAK> hari, okay, making a new media plugin, Pictures Plugin
[2008/03/21 00:15:53] <TSCHAK> basically, we need to ...get the view/visualization stuff
[2008/03/21 00:15:57] <TSCHAK> and rip it out of photo screensaver
[2008/03/21 00:16:50] <TSCHAK> hopefully this can be a partial cut and paste job
[2008/03/21 00:17:11] <TSCHAK> the first bit, is getting the DCERouter Plugin fleshed out
[2008/03/21 00:18:03] <TSCHAK> hari, i am using the Xine_Plugin as my visual template
[2008/03/21 00:18:18] <TSCHAK> hari, at the very least, you have to implement create stream, play stream, and stop stream
[2008/03/21 00:21:20] <TSCHAK> hari, pictures_plugin has a device category of media player plugins < plugins for the DCE router
[2008/03/21 00:22:41] <hari> so i assume that builds a playlist from the datagrid and then tell the device to display the items..
[2008/03/21 00:23:09] <TSCHAK> yes, all of that is actually handled by the media plugin
[2008/03/21 00:23:33] <hari> so why do we need a distinct plugin then?
[2008/03/21 00:23:34] <TSCHAK> so for this first pass, i just implement the plugin commands to create the media stream etc.
[2008/03/21 00:23:42] <TSCHAK> because it's a distinct media stream type
[2008/03/21 00:24:06] <hari> so the media plugin abstracts stream types and the distinct plugins handle them?
[2008/03/21 00:24:17] <TSCHAK> well, there's two parts
[2008/03/21 00:24:31] <TSCHAK> (yes, this is gonna take some explaining)
[2008/03/21 00:24:43] <TSCHAK> (I had to figure this all out from scratch)
[2008/03/21 00:24:52] <TSCHAK> there is.. media plugin...
[2008/03/21 00:24:57] * bmac2 is listening intently so maybe he will get a clue on plugins
[2008/03/21 00:25:07] <TSCHAK> media plugin provides all the UI aspects of the media section of the orbiter
[2008/03/21 00:25:16] <TSCHAK> it also provides the base classes for media streams
[2008/03/21 00:25:28] <shaggy71875_lmce> *shaggy listens to the wise ones as well
[2008/03/21 00:25:40] <TSCHAK> media streams are basically handle classes, that encapsulate the media url, time code, etc...
[2008/03/21 00:25:51] <hari> k
[2008/03/21 00:26:01] <TSCHAK> and every media stream, has a distinct type
[2008/03/21 00:26:05] <TSCHAK> remember, we're dealing with C++ here...
[2008/03/21 00:26:47] <TSCHAK> and typically every media type has its own plugin... Xine is sort of a swiss army knife
[2008/03/21 00:26:52] <TSCHAK> because it handles both audio and video
[2008/03/21 00:27:03] <TSCHAK> but that doesn't matter.. .for this discussion, I'll continue
[2008/03/21 00:27:10] <TSCHAK> so....
[2008/03/21 00:27:22] <TSCHAK> there are two different pieces of code we're dealing with here
[2008/03/21 00:27:47] <TSCHAK> the plugin, which runs on the core...which creates our MediaStream subclass (PictureMediaStream)
[2008/03/21 00:27:58] <TSCHAK> and finding all of the Player objects in the house that can handle it
[2008/03/21 00:28:28] <TSCHAK> the plugin part needs to deal with figuring out which players can do what, and therefore what to send...
[2008/03/21 00:28:46] <hari> k
[2008/03/21 00:28:48] <TSCHAK> the OTHER part of the equation
[2008/03/21 00:28:51] <TSCHAK> is the Player
[2008/03/21 00:28:56] <TSCHAK> the Player... is what runs on each media director
[2008/03/21 00:29:09] <TSCHAK> Pictures_Player recieves commands from Pictures_Plugin
[2008/03/21 00:29:18] <TSCHAK> mainly, Play Media, Stop Media etc.
[2008/03/21 00:29:29] <hari> k
[2008/03/21 00:29:36] <hari> how does the datagrid plugin fit into this picture?
[2008/03/21 00:29:37] <TSCHAK> and uses the media stream identifiers and URL etc passed to it from the plugin
[2008/03/21 00:29:40] <TSCHAK> to do what it needs to do to work
[2008/03/21 00:29:50] <TSCHAK> Media_Plugin handles all datagrid interaction
[2008/03/21 00:30:19] <TSCHAK> as such, you don't have to do things like register a datagrid generator, etc...
[2008/03/21 00:30:24] <TSCHAK> all you have to do
[2008/03/21 00:30:31] <TSCHAK> is respond to play media, stop media etc commands
[2008/03/21 00:30:38] <TSCHAK> and media plugin will build and manage your playlists for you
[2008/03/21 00:30:50] <hari> ah, the datagrid stuff is handled at the media plugin level?
[2008/03/21 00:30:55] <hari> k
[2008/03/21 00:30:57] <TSCHAK> you get a metric fuckton of functionality for free
[2008/03/21 00:31:05] <TSCHAK> including the file list
[2008/03/21 00:31:07] <TSCHAK> etc
[2008/03/21 00:31:12] <TSCHAK> all of this is abstracted out
[2008/03/21 00:31:14] <hari> so we don't even have to handle the playlist..
[2008/03/21 00:31:21] <TSCHAK> the only thing we need to deal with
[2008/03/21 00:31:29] <TSCHAK> is the "Jump to Playlist Entry" command
[2008/03/21 00:31:49] <TSCHAK> so if you click a picture entry on the playlist data grid, it will go to the right one
[2008/03/21 00:31:52] <hari> to tell the device which exact item of the playlist to show
[2008/03/21 00:31:55] <TSCHAK> yup
[2008/03/21 00:32:03] <TSCHAK> there are other bits as well that we can investigate
[2008/03/21 00:32:19] <TSCHAK> there are operator overloads with respect to queuing and dequeuing the playlist
[2008/03/21 00:32:20] * bmac2 is still hunting like mad to find these parts of code in the src directory in his code
[2008/03/21 00:32:38] <TSCHAK> bmac2, src/Media_Plugin
[2008/03/21 00:32:43] <bmac2> I am there
[2008/03/21 00:32:45] <TSCHAK> bmac2, and src/Xine_Plugin
[2008/03/21 00:32:49] <TSCHAK> bmac2, and src/Xine_Player
[2008/03/21 00:33:26] <TSCHAK> and there are things we need to override in the media plugin to enable certain bits of functionality
« Last Edit: March 21, 2008, 03:15:56 am by hari »
rock your home - http://www.agocontrol.com home automation

hari

  • Administrator
  • LinuxMCE God
  • *****
  • Posts: 2428
    • View Profile
    • ago control
Re: Picture Player / Plugin Workshop
« Reply #1 on: March 21, 2008, 03:13:24 am »
Quote
[2008/03/21 00:33:29] <TSCHAK> such as ContainsVideo
[2008/03/21 00:33:37] <TSCHAK> which in our case, simply needs to return true;
[2008/03/21 00:33:38] <TSCHAK> why?
[2008/03/21 00:33:43] <TSCHAK> so the photo screensaver will STOP.
[2008/03/21 00:33:48] <hari> so where are the media types defined exactly?
[2008/03/21 00:34:06] <hari> you have made your homework ;)
[2008/03/21 00:34:15] <TSCHAK> well.... this is where things get interesting
[2008/03/21 00:34:28] <TSCHAK> it STARTS, in pluto_main
[2008/03/21 00:34:29] <hari> i assume a bit in sql and a bit in c++ ;)
[2008/03/21 00:34:33] <TSCHAK> with MediaType
[2008/03/21 00:34:56] <TSCHAK> do you guys want to jump on conference?
[2008/03/21 00:34:57] <TSCHAK> hehehe
[2008/03/21 00:35:03] <shaggy71875_lmce> yes
[2008/03/21 00:35:07] <hari> |           27 | pluto_HDDVD       | LinuxMCE HD-DVD       |         NULL |        1 | NULL                                                             | videos       |                      0 |    NULL |           0 |                         NULL |     24 |      1860 |    33129 |          0 | 0000-00-00 00:00:00 |         NULL |
[2008/03/21 00:35:27] <TSCHAK> hari, okay, now let's look at that entry
[2008/03/21 00:35:27] <bmac2> ok what file inside the Medai_Plugin is this stuff in?
[2008/03/21 00:35:41] <hari> | PK_MediaType | Define            | Description           | FK_DesignObj | DCEAware | Extensions                                                       | Subdirectory | IsExternalTransmission | FK_Pipe | CanBookmark | EK_AttributeType_DefaultSort | psc_id | psc_batch | psc_user | psc_frozen | psc_mod             | psc_restrict |
[2008/03/21 00:35:43] <bmac2> right now I am looking at the Media_Plugin.cpp
[2008/03/21 00:35:56] <TSCHAK> bmac2, MediaStream.cpp has a lot of stuff that needs to be overridden.
[2008/03/21 00:36:05] <bmac2> k
[2008/03/21 00:36:15] <TSCHAK> hari, okay, PK_MediaType is important, that's our media type definition...
[2008/03/21 00:36:26] <hari> k
[2008/03/21 00:36:36] <bmac2> hari where did that come from?
[2008/03/21 00:36:39] <bmac2> the database?
[2008/03/21 00:36:46] <TSCHAK> bmac2, yes, select * from MediaType
[2008/03/21 00:36:47] <hari> bmac2: pluto_main, Table MediaType
[2008/03/21 00:36:54] <bmac2> k
[2008/03/21 00:36:59] <bmac2> just trying to keep up
[2008/03/21 00:37:01] <TSCHAK> wow, we're going at 5000 miles an hour
[2008/03/21 00:37:38] <hari> whats FK_DesignObj used for? where do i see that on the orbiter?
[2008/03/21 00:37:50] <TSCHAK> ok now, Define.. this creates a constant in Define_MediaType.h that you can reference to get your PK_MediaType
[2008/03/21 00:38:05] <TSCHAK> hari, that's not used at all, notice they're all null?
[2008/03/21 00:38:19] <hari> ah yes, i c
[2008/03/21 00:38:21] <TSCHAK> hari, this database is full of vestige columns
[2008/03/21 00:38:35] <TSCHAK> hari, okay... sooooooooo
[2008/03/21 00:38:35] <hari> TSCHAK: we have sqlCVS schema handling for that ;)
[2008/03/21 00:38:50] <TSCHAK> hari, notice what I said about Define?
[2008/03/21 00:38:54] <hari> yes
[2008/03/21 00:39:02] <TSCHAK> hari, you'll use that all over the code to refer to this media type directly.
[2008/03/21 00:39:03] <hari> thats dcegen'ed i assume?
[2008/03/21 00:39:11] <hari> wrong
[2008/03/21 00:39:11] <TSCHAK> no, that's sql2cpp'ed
[2008/03/21 00:39:13] <hari> sql2cpp'd
[2008/03/21 00:39:14] <hari> yes
[2008/03/21 00:39:23] <hari> so it ends up in which file?
[2008/03/21 00:39:29] <hari> Define_MediaType.h?
[2008/03/21 00:39:30] <TSCHAK> Define_MediaType.h
[2008/03/21 00:39:31] * bmac2 wonders if shaggy71875_lmce is as lost as he is right now
[2008/03/21 00:40:00] <TSCHAK> if you look there, you'll see there are ints that match the PK_MediaTypes in question
[2008/03/21 00:40:02] <shaggy71875_lmce> yes bmac
[2008/03/21 00:40:11] <hari> so that gives:
[2008/03/21 00:40:13] <hari> #define MEDIATYPE_pluto_HDDVD_CONST 27
[2008/03/21 00:40:52] <TSCHAK> hari, okay, so that's define... the other major pieces are... Subdirectory
[2008/03/21 00:40:53] <hari> so it simply appends the define field to MEDIATYPE_
[2008/03/21 00:40:58] <TSCHAK> yup
[2008/03/21 00:41:14] <TSCHAK> Subdirectory is used by UpdateMedia to crawl for your media type in LMCE directory structure
[2008/03/21 00:41:54] <shaggy71875_lmce> besides BMAC if you cant break it while playing with it what fun is it anyway
[2008/03/21 00:42:16] <TSCHAK> Extensions is used to tell updatemedia what extensions to crawl for
[2008/03/21 00:42:23] <hari> i see:
[2008/03/21 00:42:24] <TSCHAK> DCEAware needs to be set to 1
[2008/03/21 00:42:30] <hari>  7 | pluto_Pictures    | LinuxMCE Pictures     |         NULL |        1 | jpg,bmp,png,gif,tif
[2008/03/21 00:42:31] <bmac2> so we need lots of extensions
[2008/03/21 00:43:25] <bmac2> some windows downloads caps the jpg and makes linux mad if you don't specify
[2008/03/21 00:43:38] <TSCHAK> and EK_AttributeType_DefaultSort corresponds to the corresponding table in pluto_meida
[2008/03/21 00:44:03] <hari> so there is an AttributeType table i assume
[2008/03/21 00:44:12] <TSCHAK> in our case, that's 13
[2008/03/21 00:44:18] <TSCHAK> hari, yes, in pluto_media
[2008/03/21 00:44:26] <TSCHAK> hari, 13 = Filename
[2008/03/21 00:44:30] <shaggy71875_lmce> does that mean it will crawl all shares/devices on network for those files and list them in pictures
[2008/03/21 00:44:34] <TSCHAK> so defautl Sort by Filename
[2008/03/21 00:44:40] <TSCHAK> shaggy71875_lmce, normally yes
[2008/03/21 00:44:57] <shaggy71875_lmce> thats why all my windows junk showes up
[2008/03/21 00:44:58] <TSCHAK> shaggy71875_lmce, however, UpdateMedia has a hard-coded bit of logic that prevents pictrues from being sought in ANYTHING other than LMCE's directory structure
[2008/03/21 00:45:00] <hari> err, 13 = Title ;)
[2008/03/21 00:45:04] @ seth|work joined channel #linuxmce
[2008/03/21 00:45:08] <TSCHAK> hari, oh yes, sorry, Title...
[2008/03/21 00:45:12] <hari> hehe ;)
[2008/03/21 00:45:21] <TSCHAK> hari, if no other attributes are set, updatemedia sets title to filename
[2008/03/21 00:45:36] <TSCHAK> hari, so that's the first bit
[2008/03/21 00:45:39] <TSCHAK> now
[2008/03/21 00:46:08] <TSCHAK> we go to MediaType_DesignObj;
[2008/03/21 00:46:38] <TSCHAK> I'm trying to do a brain dump!
[2008/03/21 00:46:52] <bmac2> ok TSCHAK where is mediatype_designobj?
[2008/03/21 00:46:56] <bmac2> can't find that file
[2008/03/21 00:47:19] <TSCHAK> that's another database table
[2008/03/21 00:47:19] <hari> bmac2: pluto_main table
[2008/03/21 00:47:19] <hari> *databae
[2008/03/21 00:47:19] <TSCHAK> select * from MediaType_DesignObj;
[2008/03/21 00:47:19] <bmac2> k
[2008/03/21 00:47:19] <TSCHAK> in pluto_main
[2008/03/21 00:47:24] <bmac2> not in my database so just have to listen
[2008/03/21 00:47:30] <TSCHAK> it's there
[2008/03/21 00:47:31] <TSCHAK> i promise
[2008/03/21 00:47:31] <TSCHAK> :-)
[2008/03/21 00:47:40] <TSCHAK> you wouldn't be seeing any media if it wasn't.
[2008/03/21 00:47:46] <hari> bmac2: did you do a "use pluto_main" in mysql?
[2008/03/21 00:47:48] <shaggy71875_lmce> kk
[2008/03/21 00:47:53] <bmac2> no
[2008/03/21 00:47:54] <shaggy71875_lmce> dump away
[2008/03/21 00:48:12] <TSCHAK> i would suggest keeping a mysql window open
[2008/03/21 00:48:16] <hari> so do sth like sudo mysql
[2008/03/21 00:48:16] <bmac2> I am just listending and looking at the C code
[2008/03/21 00:48:21] <bmac2> k
[2008/03/21 00:48:23] <TSCHAK> i will be jumping bakc and forth between the database and the code
[2008/03/21 00:48:25] <TSCHAK> both are important
[2008/03/21 00:50:00] <bmac2> ok did a use pluto_main;
[2008/03/21 00:50:03] <bmac2> what is the next command?
[2008/03/21 00:50:06] <bmac2> to see that table?
[2008/03/21 00:50:09] <TSCHAK> SELECT * from MediaType;
[2008/03/21 00:50:23] <bmac2> k
[2008/03/21 00:50:23] <bmac2> there
[2008/03/21 00:50:27] <bmac2> got a long list
[2008/03/21 00:50:38] <TSCHAK> okay
[2008/03/21 00:50:38] <TSCHAK> now...
[2008/03/21 00:50:42] <TSCHAK> what's happening here
[2008/03/21 00:50:43] <bmac2> I see line 7
[2008/03/21 00:50:51] <bmac2> where it defines the pics
[2008/03/21 00:50:57] * TSCHAK looks
[2008/03/21 00:51:05] <hari> yes
[2008/03/21 00:51:13] <bmac2> pluto_Pictures is line 7
[2008/03/21 00:51:32] <bmac2> line 8 is the missing live radio
[2008/03/21 00:51:33] <bmac2> lol
[2008/03/21 00:51:33] <hari> TSCHAK: what are those np (non pluto?) media types?
[2008/03/21 00:51:40] <TSCHAK> select * from MediaType_DesignObj WHERE FK_MediaType = 7;
[2008/03/21 00:51:50] <TSCHAK> hari, np == Non-Pluto
[2008/03/21 00:52:05] <TSCHAK> hari, those are special types that are defined entirely within the media plugin
[2008/03/21 00:52:11] <TSCHAK> hari, and are handled by the generic media handler
[2008/03/21 00:52:13] <hari> so when we control some device over ir and such?
[2008/03/21 00:52:18] <bmac2> ok got that two lines
[2008/03/21 00:52:19] <TSCHAK> hari, yes.
[2008/03/21 00:52:30] <bmac2> or one line
[2008/03/21 00:52:37] <bmac2> with the titles above
[2008/03/21 00:52:38] <TSCHAK> yeah, i did that so we could zoom in and see
[2008/03/21 00:53:15] <TSCHAK> so we've got this line, you see the media type for it
[2008/03/21 00:53:25] <TSCHAK> but you also see a set of designobjs and screens
[2008/03/21 00:53:40] <bmac2> yes the FK_MediaType is 7
[2008/03/21 00:53:44] <bmac2> which matches the other table
[2008/03/21 00:53:54] <bmac2> where it defines the types by extensions ???? right/
[2008/03/21 00:53:58] <TSCHAK> yes
[2008/03/21 00:54:00] <bmac2> k
[2008/03/21 00:54:04] <bmac2> with you so far
[2008/03/21 00:54:08] <TSCHAK> FK == foreign key
[2008/03/21 00:54:11] <TSCHAK> EK == External Key
[2008/03/21 00:54:15] <TSCHAK> PK == Primary Key
[2008/03/21 00:54:28] <TSCHAK> those are sqlcpp and sqlcvs conventions
[2008/03/21 00:54:35] <TSCHAK> so
[2008/03/21 00:54:37] <hari> and you should really follow them ;)
[2008/03/21 00:54:40] <TSCHAK> we have one for FK_Screen
[2008/03/21 00:54:50] <TSCHAK> that means, we have a table called Screen
[2008/03/21 00:54:52] <bmac2> that I am familiar with on keys
[2008/03/21 00:54:55] <bmac2> that i have done
[2008/03/21 00:55:04] <TSCHAK> select * from Screen WHERE PK_Screen  '77';
[2008/03/21 00:55:20] <hari> 77 | Generic DVD Remote | NULL   | Generic DVD Remote |                      NULL |             1 |                 0 |              0 |                  1 |     77 |      1018 |    33129 |          0 | 0000-00-00 00:00:00 |         NULL |
[2008/03/21 00:55:38] <TSCHAK> is it starting to make sense now?
[2008/03/21 00:55:41] <hari> yes
[2008/03/21 00:55:49] <hari> awesome
[2008/03/21 00:55:52] <bmac2> mine failed
[2008/03/21 00:56:02] <TSCHAK> sorry
[2008/03/21 00:56:04] <TSCHAK> forgot the =
[2008/03/21 00:56:05] <TSCHAK> ;-)
[2008/03/21 00:56:11] <TSCHAK> fingers outwunning bwain
[2008/03/21 00:56:14] <bmac2> ok
[2008/03/21 00:56:18] <bmac2> with you I should have caught that
[2008/03/21 00:56:25] <TSCHAK> okay so
[2008/03/21 00:56:32] <bmac2> 77 generic DVD remote?
[2008/03/21 00:56:33] <TSCHAK> that's how you match screens
[2008/03/21 00:56:47] <TSCHAK> yes, now, you know when you regenerate an orbiter
[2008/03/21 00:56:53] <TSCHAK> it says, regenerating screen 46...etc.etc..etc/
[2008/03/21 00:56:54] <TSCHAK> ?
[2008/03/21 00:56:58] <bmac2> yes
[2008/03/21 00:56:58] <hari> yes
[2008/03/21 00:57:03] <TSCHAK> it's going through all those screens in that table
[2008/03/21 00:57:06] <bmac2> those match the PK_Screen
[2008/03/21 00:57:12] <bmac2> numbers in column 1
[2008/03/21 00:57:16] <bmac2> of each table row
[2008/03/21 00:57:16] <TSCHAK> this tells us
[2008/03/21 00:57:26] <TSCHAK> that this media type needs this screen for a STANDARD ORBITER
[2008/03/21 00:57:41] <hari> and what about the JavaMO ;)
[2008/03/21 00:57:44] <TSCHAK> this is the screen used on the nokia pads
[2008/03/21 00:57:46] <TSCHAK> hari, same
[2008/03/21 00:57:51] <TSCHAK> hari, different variation
[2008/03/21 00:57:59] <hari> k
[2008/03/21 00:58:00] <TSCHAK> hari, now we're getting into HADesigner territory
[2008/03/21 00:58:05] <TSCHAK> hari, and we are not gonna go there
[2008/03/21 00:58:18] <TSCHAK> i am keeping this discussion focused.
[2008/03/21 00:58:43] <TSCHAK> now..back to the mediatype_designobj row we had earlier
[2008/03/21 00:58:53] <hari> k
[2008/03/21 00:59:01] <bmac2> with 7 77 and all the nulls
[2008/03/21 00:59:03] <TSCHAK> okay, notice, the FK_DesignObj_Popup ?
[2008/03/21 00:59:12] <bmac2> 4th column
[2008/03/21 00:59:17] <TSCHAK> yes, 4964
[2008/03/21 00:59:18] <bmac2> 4964
[2008/03/21 00:59:27] <TSCHAK> any time you see a DesignObj column
[2008/03/21 00:59:31] <TSCHAK> you can enter this number into HADesigner
[2008/03/21 00:59:36] <TSCHAK> to see that designobj
[2008/03/21 00:59:38] * hari makes notes
[2008/03/21 00:59:40] <TSCHAK> in this case
[2008/03/21 00:59:43] <bmac2> that refers to HADESigner
[2008/03/21 00:59:53] <TSCHAK> this designobj is the left hand menu that's displayed on UI2
[2008/03/21 00:59:58] <hari> so a screen is a collection of designobj?
rock your home - http://www.agocontrol.com home automation

hari

  • Administrator
  • LinuxMCE God
  • *****
  • Posts: 2428
    • View Profile
    • ago control
Re: Picture Player / Plugin Workshop
« Reply #2 on: March 21, 2008, 03:14:13 am »
Quote
[2008/03/21 01:00:15] <TSCHAK> yes
[2008/03/21 01:00:15] <TSCHAK> quite literally
[2008/03/21 01:00:15] <bmac2> wait
[2008/03/21 01:00:15] <hari> and the designobj itself have layout hints?
[2008/03/21 01:00:15] <bmac2> where do you see UI3
[2008/03/21 01:00:18] <bmac2> UI2
[2008/03/21 01:00:27] <TSCHAK> bmac2, you don't, I'm telling you that.
[2008/03/21 01:00:32] <bmac2> oh ok
[2008/03/21 01:00:33] <TSCHAK> external information
[2008/03/21 01:00:39] <bmac2> I thought the table showed that
[2008/03/21 01:00:50] <bmac2> you just figured that out doing mame
[2008/03/21 01:00:50] <TSCHAK> so basically, if you look at 4964 in HADesigner
[2008/03/21 01:00:51] <bmac2> ok
[2008/03/21 01:00:53] <bmac2> continue
[2008/03/21 01:00:59] <TSCHAK> you see the left hand menu
[2008/03/21 01:01:03] <TSCHAK> which, with video contains
[2008/03/21 01:01:05] <TSCHAK> Aspect Ratio
[2008/03/21 01:01:08] <TSCHAK> Thumbnail
[2008/03/21 01:01:10] <TSCHAK> Random
[2008/03/21 01:01:11] <TSCHAK> etc.etc.etc..
[2008/03/21 01:01:13] <bmac2> k
[2008/03/21 01:01:16] <hari> k
[2008/03/21 01:01:24] <TSCHAK> it's what you see when you mouse over the left hand big square
[2008/03/21 01:01:29] <TSCHAK> make sense?
[2008/03/21 01:01:33] * bmac2 thinks his three dual head machines aren't enough, need a windows box too
[2008/03/21 01:01:35] <bmac2> yes
[2008/03/21 01:01:40] <bmac2> with you on that
[2008/03/21 01:01:43] <shaggy71875_lmce> yikes
[2008/03/21 01:01:45] <TSCHAK> okay...
[2008/03/21 01:01:53] <hari> no
[2008/03/21 01:02:00] <TSCHAK> hari, ?
[2008/03/21 01:02:04] <TSCHAK> hari, question?
[2008/03/21 01:02:11] <hari> left hand big square?
[2008/03/21 01:02:15] <shaggy71875_lmce> okay where are the images it displays located (looks to break somthing
[2008/03/21 01:02:19] <TSCHAK> hari, you don't use UI2 do you?
[2008/03/21 01:02:21] <hari> i do
[2008/03/21 01:02:24] <TSCHAK> hari, it's the left most menu in UI2
[2008/03/21 01:02:34] <TSCHAK> hari, the one that changes with the media
[2008/03/21 01:02:37] <hari> ah
[2008/03/21 01:02:39] <hari> ok
[2008/03/21 01:02:46] <TSCHAK> okay... continuing
[2008/03/21 01:02:56] <TSCHAK> FK_Screen_FileList
[2008/03/21 01:03:07] <TSCHAK> this is what is displayed, when you send an orbiter, a Show File List command
[2008/03/21 01:03:10] <TSCHAK> go ahead and do that
[2008/03/21 01:03:13] <TSCHAK> from the web admin
[2008/03/21 01:03:15] <bmac2> 47
[2008/03/21 01:03:21] <bmac2> is the value for that
[2008/03/21 01:03:24] <TSCHAK> yes.
[2008/03/21 01:03:40] <TSCHAK> if you look at Screen, you'll see it's the file list used for jsut about everything else
[2008/03/21 01:03:56] <TSCHAK> and if you do a Show File List command
[2008/03/21 01:04:00] <TSCHAK> the parameter it asks you for is
[2008/03/21 01:04:02] <TSCHAK> guess what?
[2008/03/21 01:04:04] <TSCHAK> MediaType
[2008/03/21 01:04:06] <hari> do i have to select a file?
[2008/03/21 01:04:11] <hari> in the send command?
[2008/03/21 01:04:16] <bmac2> wait one opening webmin
[2008/03/21 01:04:21] <TSCHAK> hari, no no no
[2008/03/21 01:04:24] <hari> k
[2008/03/21 01:04:32] <TSCHAK> just enter a media type in that list.. in our case, just enter 7
[2008/03/21 01:04:42] <TSCHAK> and you should see "LinuxMCE Pictures"
[2008/03/21 01:04:43] <hari> AWESOME ;)
[2008/03/21 01:04:48] <bmac2> wait
[2008/03/21 01:04:54] <bmac2> where in webmin do I send that command?
[2008/03/21 01:05:01] <TSCHAK> bmac2, Advanced->Devices
[2008/03/21 01:05:02] <hari> bmac2: choose any orbiter
[2008/03/21 01:05:07] <TSCHAK> bmac2, select one of your orbiters
[2008/03/21 01:05:12] <TSCHAK> bmac2, the closest one to you
[2008/03/21 01:05:14] <hari> go to advanced and then select send command to device
[2008/03/21 01:05:18] <TSCHAK> bmac2, such as, i guess.. #20
[2008/03/21 01:05:31] <TSCHAK> bmac2, then you can select Send Command to Device
[2008/03/21 01:05:58] <bmac2> I have no choices from the pulldown
[2008/03/21 01:06:05] <bmac2> once I click on send command
[2008/03/21 01:06:10] <shaggy71875_lmce> advanced >config>devices?
[2008/03/21 01:06:10] <bmac2> my core is all that is r4unning right now
[2008/03/21 01:06:14] <TSCHAK> then you have the wrong device
[2008/03/21 01:06:21] <TSCHAK> choose device #20
[2008/03/21 01:06:23] <TSCHAK> Onscreen ORbiter
[2008/03/21 01:07:02] <hari> http://vt100.at/images/Screenshot-13.png
[2008/03/21 01:07:19] <bmac2> ok now media type?
[2008/03/21 01:07:42] <hari> http://vt100.at/images/Screenshot-14.png
[2008/03/21 01:07:50] <hari> simply enter 7
[2008/03/21 01:07:57] <hari> in the data field
[2008/03/21 01:08:13] <bmac2> wait
[2008/03/21 01:08:17] <bmac2> I am on #20
[2008/03/21 01:08:22] <bmac2> the onscreen orbiter
[2008/03/21 01:08:30] <bmac2> I click on send command at the top
[2008/03/21 01:08:36] <bmac2> I get another window
[2008/03/21 01:08:45] <bmac2> I click on send to this device the command
[2008/03/21 01:08:47] <bmac2> and get a list
[2008/03/21 01:08:52] <bmac2> but I don't see media type
[2008/03/21 01:08:58] <TSCHAK> no no no
[2008/03/21 01:09:00] <TSCHAK> show file list
[2008/03/21 01:09:05] <hari> you have to select "Show File List"
[2008/03/21 01:09:21] <bmac2> got you
[2008/03/21 01:09:22] <hari> as seen on the screenshot
[2008/03/21 01:09:36] <bmac2> so this should show up ON the core screen?
[2008/03/21 01:09:40] <TSCHAK> bmac2, yes
[2008/03/21 01:09:44] <bmac2> k
[2008/03/21 01:09:49] <TSCHAK> bmac2, because you're sending the command to the core's on-screen orbiter
[2008/03/21 01:09:53] <bmac2> ok with you
[2008/03/21 01:09:54] <hari> bmac2: you need a N800 :)
[2008/03/21 01:09:55] <shaggy71875_lmce> got it
[2008/03/21 01:10:04] <bmac2> I need a LOT of hardware
[2008/03/21 01:10:07] <TSCHAK> bmac2, see what happened?
[2008/03/21 01:10:14] <shaggy71875_lmce> send me a n800 lol
[2008/03/21 01:10:17] <bmac2> I understand
[2008/03/21 01:10:22] <TSCHAK> bmac2, okay now
[2008/03/21 01:10:27] <TSCHAK> back to that table row
[2008/03/21 01:16:06] <TSCHAK> MediaType_DesignObj
[2008/03/21 01:16:17] <TSCHAK> we're going to crawl through ALL of it
[2008/03/21 01:16:18] <TSCHAK> we have to
[2008/03/21 01:16:38] <TSCHAK> notice the next one is FK_Screen_OSD ?
[2008/03/21 01:16:48] <hari> null
[2008/03/21 01:16:52] <TSCHAK> yup
[2008/03/21 01:16:55] <TSCHAK> it is
[2008/03/21 01:17:00] <TSCHAK> and we will change that
[2008/03/21 01:17:03] <TSCHAK> but not now
[2008/03/21 01:17:16] <TSCHAK> to compare
[2008/03/21 01:17:18] <bmac2> yes
[2008/03/21 01:17:27] <TSCHAK> look at MediaType 5
[2008/03/21 01:17:35] <TSCHAK> SELECT * from MediaType WHERE PK_MediaType = 5
[2008/03/21 01:17:38] <TSCHAK> this is for Videos
[2008/03/21 01:17:38] <hari> 140
[2008/03/21 01:17:52] <TSCHAK> this is the screen
[2008/03/21 01:17:56] <TSCHAK> that is shown on on-screen orbiters
[2008/03/21 01:17:59] <TSCHAK> any time you see _OSD
[2008/03/21 01:18:03] <TSCHAK> this means On screen orbiter
[2008/03/21 01:18:06] <TSCHAK> 140 in our case
[2008/03/21 01:18:08] <hari> ah
[2008/03/21 01:18:17] <hari> thought it was On Screen Display to overlay sth ;)
[2008/03/21 01:18:19] <TSCHAK> is also what we want
[2008/03/21 01:18:29] <TSCHAK> because in the case of UI1
[2008/03/21 01:18:37] <TSCHAK> it will display the orbiter stuff with the little window
[2008/03/21 01:18:44] <TSCHAK> on the TV
[2008/03/21 01:18:51] <TSCHAK> in the case of UI2, it just displays the whole window
[2008/03/21 01:18:57] <TSCHAK> this is defined in HADesigner
[2008/03/21 01:19:04] <TSCHAK> but am I making sense?
[2008/03/21 01:19:15] <hari> yes
[2008/03/21 01:19:16] <TSCHAK> we'll most likely use Screen 140
[2008/03/21 01:19:25] <bmac2> ok I am not seeing the 140
[2008/03/21 01:19:38] <TSCHAK> bmac SELECT * from MediaType WHERE MediaType = 5
[2008/03/21 01:19:44] <hari> bmac2: the FK_Screen_OSD field
[2008/03/21 01:19:46] <TSCHAK> that's the Video media type
[2008/03/21 01:19:56] <bmac2> I did the select mediatype = 5
[2008/03/21 01:20:05] <bmac2> and got pluto_StoredVideo
[2008/03/21 01:20:08] <TSCHAK> yup
[2008/03/21 01:20:09] <bmac2> as the second line
[2008/03/21 01:20:14] <bmac2> where is the 140?
[2008/03/21 01:20:16] <TSCHAK> we're going to be using the same screen...
[2008/03/21 01:20:20] <TSCHAK> FK_Screen_OSD
[2008/03/21 01:20:28] <hari> mysql> select * from MediaType_DesignObj where FK_Mediatype=5;
[2008/03/21 01:20:41] <hari>  1 |            5 |        70 |               4964 |                 47 |           140 |            50 |               143 |                 224 |                 230 | NULL        |    NULL |         1
[2008/03/21 01:20:54] <hari> 6th field,
[2008/03/21 01:21:35] <hari> TSCHAK: your query missed the _DesignObj
[2008/03/21 01:22:21] <TSCHAK> do SELECT * from Screen WHERE PK_Screen = 140;
[2008/03/21 01:22:33] <TSCHAK> and you'll see, that it is indeed the Full Screen Videos remote
[2008/03/21 01:22:36] <hari> k
[2008/03/21 01:22:43] <hari> yes
[2008/03/21 01:23:00] <TSCHAK> bmac2, make sense?
[2008/03/21 01:23:16] <bmac2> yep
[2008/03/21 01:23:20] <bmac2> if i could spell where
[2008/03/21 01:23:22] <bmac2> lol
[2008/03/21 01:23:22] <TSCHAK> so basically what we are doing at this very moment, is giving information to the media plugin
[2008/03/21 01:23:31] <TSCHAK> as to what remote control screens to use in which cases
[2008/03/21 01:23:51] <TSCHAK> okay, now NEXT screen
[2008/03/21 01:23:55] <TSCHAK> erm, next column
[2008/03/21 01:23:59] <TSCHAK> in MediaType_DesignObj
[2008/03/21 01:24:00] <shaggy71875_lmce> looks to buy a n800
[2008/03/21 01:24:05] <TSCHAK> see FK_Screen_Alt ?
[2008/03/21 01:24:14] <bmac2> 50
[2008/03/21 01:24:37] <TSCHAK> now look up THAT screen
[2008/03/21 01:24:40] <TSCHAK> see what screen that is?
[2008/03/21 01:24:51] <bmac2> dvd menu
[2008/03/21 01:24:53] <TSCHAK> yup
[2008/03/21 01:25:11] <TSCHAK> when you view a DVD menu, what happens is the alt screen is sent, and this screen is sent back
[2008/03/21 01:25:25] <TSCHAK> it provides a way to provide a second UI that can easily be switched by the media plugin
[2008/03/21 01:25:34] <bmac2> k
[2008/03/21 01:25:38] <hari> k
[2008/03/21 01:25:39] <TSCHAK> you can see me use this in mame plugin and mame player
[2008/03/21 01:25:48] <hari> remember that from your screenshots
[2008/03/21 01:25:49] <TSCHAK> but i'll discuss that at some other time
[2008/03/21 01:25:50] <bmac2> ok
[2008/03/21 01:26:05] <TSCHAK> now back again
[2008/03/21 01:26:09] <TSCHAK> FK_Screen_Alt_OSD
[2008/03/21 01:26:12] <TSCHAK> same thing
[2008/03/21 01:26:18] <TSCHAK> except for the on-screen orbiters
[2008/03/21 01:26:59] <bmac2> ohh 143
[2008/03/21 01:27:06] <hari> DVD menu full screen remote
[2008/03/21 01:27:34] <TSCHAK> now, NEXT COLUMN
[2008/03/21 01:27:46] <hari> Speed?
[2008/03/21 01:27:51] <TSCHAK> OSD_Speed and OSD track
[2008/03/21 01:27:52] <bmac2> fk_screen osd speed
[2008/03/21 01:27:59] <bmac2> 224 and 230
[2008/03/21 01:28:00] <TSCHAK> those, are what you get, when you use the gyro remote
[2008/03/21 01:28:32] <TSCHAK> you can define those as needed.. we will leave them as is
[2008/03/21 01:28:53] <TSCHAK> the rest of it doesn't matter
[2008/03/21 01:28:58] <TSCHAK> we can move on
[2008/03/21 01:28:58] <bmac2> k
[2008/03/21 01:29:03] <TSCHAK> but you see
[2008/03/21 01:29:06] <TSCHAK> even at this point
[2008/03/21 01:29:12] <TSCHAK> we have enough to display a file list
[2008/03/21 01:29:15] <TSCHAK> however
[2008/03/21 01:29:22] <TSCHAK> if we actually tried to display something at this point
[2008/03/21 01:29:23] <bmac2> not to display the files
[2008/03/21 01:29:30] <bmac2> just the list
[2008/03/21 01:29:32] <TSCHAK> it would say
[2008/03/21 01:29:33] <TSCHAK> yes
[2008/03/21 01:29:33] <hari> there is no handler for the media type i assume
[2008/03/21 01:29:34] <TSCHAK> it would say
[2008/03/21 01:29:41] <bmac2> unknown file type
[2008/03/21 01:29:45] <TSCHAK> "There is no device in this entertainment area capable of playing it"
[2008/03/21 01:30:00] <TSCHAK> because the system doesn't know, what plugin to pair
[2008/03/21 01:30:05] <bmac2> soo we need to modify player to "play" the files
[2008/03/21 01:30:24] <TSCHAK> we have to tell the system which device template will handle this media type
[2008/03/21 01:30:32] <TSCHAK> on to the next table
[2008/03/21 01:30:39] <hari> TSCHAK: one day we will control all our pictureframes with that ;)
[2008/03/21 01:30:51] <TSCHAK> :-)
[2008/03/21 01:30:51] <bmac2> you and those damn picture frames
[2008/03/21 01:30:52] <bmac2> lol
[2008/03/21 01:30:56] <TSCHAK> i want one too
[2008/03/21 01:30:58] <TSCHAK> ok moving on
[2008/03/21 01:31:07] <shaggy71875_lmce> have one
[2008/03/21 01:31:17] <bmac2> what is the next table?
[2008/03/21 01:31:17] <hari> that was meant seriously ;)
[2008/03/21 01:31:28] <bmac2> I know that is what scares me hari
[2008/03/21 01:31:32] <hari> hehehe
[2008/03/21 01:31:41] <TSCHAK> the next table is DeviceTemplate_MediaType
[2008/03/21 01:31:54] <shaggy71875_lmce> hmm pictureframe that plays video
[2008/03/21 01:32:09] <bmac2> ok 62 rows in that table
[2008/03/21 01:32:12] <bmac2> which row do we need?
[2008/03/21 01:32:20] <TSCHAK>  select * from DeviceTemplate_MediaType WHERE FK_MediaType = '5';
[2008/03/21 01:33:01] <bmac2> ok
[2008/03/21 01:33:05] <bmac2> got the table
[2008/03/21 01:33:07] <TSCHAK> the first row is what we want
[2008/03/21 01:33:07] <bmac2> not what hari has
[2008/03/21 01:33:25] <hari> bmac2: thats some output from "Describe DeviceTEmplate_Mediatype"
[2008/03/21 01:33:56] <TSCHAK> now
[2008/03/21 01:34:02] <TSCHAK> open Device Template 5 in the web admin
[2008/03/21 01:34:07] <TSCHAK> see which one it is?
[2008/03/21 01:34:08] <hari>  4 |                 5 |            5 |                    1 |                1 |              1 |                      1 |                       1 | NULL
[2008/03/21 01:34:41] <hari> xine player
[2008/03/21 01:34:54] <TSCHAK> this becomes the device template of our Picture Player
[2008/03/21 01:35:18] <TSCHAK> and we use the same Can* properties as the video type
[2008/03/21 01:35:24] <TSCHAK> hopefully that's self explanatory so far?
[2008/03/21 01:35:34] <hari> so it implements media player commands..
[2008/03/21 01:36:54] <TSCHAK> bmac2, configuration->Device templates
[2008/03/21 01:37:20] <bmac2> got it
[2008/03/21 01:37:23] <bmac2> xine
[2008/03/21 01:37:33] <bmac2> under media players dce software wrappers
[2008/03/21 01:38:09] <TSCHAK> so the media plugin knows that this media type is associated with this device type
[2008/03/21 01:38:11] <TSCHAK> okay
[2008/03/21 01:38:45] <bmac2> so we need to edit this to add types to it?
[2008/03/21 01:38:55] <bmac2> or is that done in the src code for this?
[2008/03/21 01:38:57] <hari> look at the "Commands section"
[2008/03/21 01:39:17] <TSCHAK> bmac2, we need to make our own new player
[2008/03/21 01:39:20] <hari> and press "edit commands" besides "media player commands"
[2008/03/21 01:39:21] <TSCHAK> bmac2, called Picture Player
[2008/03/21 01:39:22] <bmac2> k
[2008/03/21 01:39:30] <bmac2> but we copy this one? and use xine to show pics?
[2008/03/21 01:39:31] <TSCHAK> bmac2, which duplicates the majority of what's in this
[2008/03/21 01:39:32] <TSCHAK> yes
[2008/03/21 01:39:33] <TSCHAK> no
[2008/03/21 01:39:41] <hari> bmac2: you then see some of the media player commands the xine template implements
[2008/03/21 01:39:45] <TSCHAK> we're doing a new player, grabbing code out of pluto_screen_saver
[2008/03/21 01:39:50] <bmac2> k
[2008/03/21 01:39:52] <bmac2> with you
[2008/03/21 01:39:56] <bmac2> what does flickr use?
[2008/03/21 01:40:01] <bmac2> it shows pics?
[2008/03/21 01:40:11] <TSCHAK> the flickr screensaver is photo screensaver
[2008/03/21 01:40:15] <bmac2> oh ok
[2008/03/21 01:40:15] <TSCHAK> but since this is a new media type
[2008/03/21 01:40:20] <TSCHAK> it needs to implement media player commands
[2008/03/21 01:40:20] <bmac2> kinda
[2008/03/21 01:40:23] <bmac2> ok
[2008/03/21 01:40:28] <bmac2> so part of xine code
[2008/03/21 01:40:35] <bmac2> part of screensaver
[2008/03/21 01:40:42] <bmac2> part of mediatypes in database
[2008/03/21 01:40:47] <bmac2> with you so far
[2008/03/21 01:40:55] <TSCHAK> nothing from xine... we just use this database entry
[2008/03/21 01:40:58] <TSCHAK> as a boilerplate
[2008/03/21 01:41:00] <bmac2> yes
[2008/03/21 01:41:04] <bmac2> to me that is some of it
[2008/03/21 01:41:07] <TSCHAK> ok
[2008/03/21 01:41:08] <bmac2> using it as a template
[2008/03/21 01:41:20] <TSCHAK> so we get a new device template #, and put THAT into the database...
[2008/03/21 01:41:26] <TSCHAK> if you dig around in the template
[2008/03/21 01:41:31] <TSCHAK> you'll see all sorts of commands implemented
[2008/03/21 01:41:38] <bmac2> yes
[2008/03/21 01:41:40] <TSCHAK> stop media, start media, play, etc..etc...
[2008/03/21 01:41:56] <TSCHAK> these are all the bits of C++ codeage that are skeletoned by DCEGen
[2008/03/21 01:41:58] <TSCHAK> that you fill in
[2008/03/21 01:42:08] <bmac2> yes
[2008/03/21 01:42:13] <bmac2> and I see all the stuff
[2008/03/21 01:42:19] <TSCHAK> yup
[2008/03/21 01:42:20] <bmac2> like select highlighted item
[2008/03/21 01:42:24] <bmac2> move select
[2008/03/21 01:42:25] <bmac2> etc
[2008/03/21 01:42:27] <TSCHAK> yup
[2008/03/21 01:42:32] <TSCHAK> tons of possible commands
[2008/03/21 01:42:34] <bmac2> lots and lots and lots of stuff
[2008/03/21 01:42:37] <TSCHAK> you pick what you need
[2008/03/21 01:42:39] <bmac2> k
[2008/03/21 01:42:43] <TSCHAK> okay
[2008/03/21 01:42:46] <TSCHAK> now close those off for now
[2008/03/21 01:43:01] <TSCHAK> now...
[2008/03/21 01:43:08] <TSCHAK> this gives us enough info for the media plugin
[2008/03/21 01:43:11] <TSCHAK> to be able to function
[2008/03/21 01:43:13] <TSCHAK> almost
[2008/03/21 01:43:16] <bmac2> lol
[2008/03/21 01:43:20] <bmac2> and he says almost
[2008/03/21 01:43:20] <TSCHAK> see, we still need to create a media stream
[2008/03/21 01:43:24] <bmac2> I knew that was coming
[2008/03/21 01:43:26] <shaggy71875_lmce> HAH
[2008/03/21 01:43:36] <TSCHAK> the player needs something to play, right?
[2008/03/21 01:43:44] <TSCHAK> okay peoples
[2008/03/21 01:43:46] <bmac2> media stream is in the media_plugin stuff
[2008/03/21 01:43:51] <bmac2> ?
[2008/03/21 01:43:52] <TSCHAK> yup
[2008/03/21 01:43:54] <bmac2> k
[2008/03/21 01:43:56] <bmac2> so I am with you
[2008/03/21 01:43:59] <bmac2> sorta kinda
[2008/03/21 01:44:00] <TSCHAK> do you guys have the latest SVN checkout?
[2008/03/21 01:44:02] <TSCHAK> or recent?
[2008/03/21 01:44:07] <bmac2> mine is a couple of weeks old
[2008/03/21 01:44:08] <TSCHAK> so you can see MAME_Plugin ?
[2008/03/21 01:44:11] <bmac2> yes
[2008/03/21 01:44:12] <bmac2> I got hat
rock your home - http://www.agocontrol.com home automation

hari

  • Administrator
  • LinuxMCE God
  • *****
  • Posts: 2428
    • View Profile
    • ago control
Re: Picture Player / Plugin Workshop
« Reply #3 on: March 21, 2008, 03:14:47 am »
Quote
[2008/03/21 01:44:15] <hari> yes
[2008/03/21 01:44:24] <TSCHAK> ok, open MAME_Plugin.cpp
[2008/03/21 01:44:36] <TSCHAK> see i told you, we're jumping ALL OVER THE PLACE
[2008/03/21 01:44:42] <TSCHAK> I had to figure _ALL_ this shit out
[2008/03/21 01:44:43] <bmac2> ok got that open in kate
[2008/03/21 01:44:44] <TSCHAK> from scratch
[2008/03/21 01:44:45] <hari> k
[2008/03/21 01:44:59] <bmac2> so far 4 sceens full of windows
[2008/03/21 01:45:00] <hari> TSCHAK: we know, you waste your time with bad assed projects ;)
[2008/03/21 01:45:06] <hari> could not resist...
[2008/03/21 01:45:12] <hari> thank your for explaining all that!!!
[2008/03/21 01:45:28] <bmac2> in yoiur plugin for mame
[2008/03/21 01:45:31] <bmac2> what am I looking for?
[2008/03/21 01:45:35] <TSCHAK> the constructor doesn't really do much
[2008/03/21 01:45:40] <TSCHAK> it just sets up some variables
[2008/03/21 01:45:45] <TSCHAK> and creates mutexes for later
[2008/03/21 01:45:49] <TSCHAK> what we're interested in
[2008/03/21 01:45:51] <hari> so the MediaPlugin is our sister..
[2008/03/21 01:45:59] <TSCHAK> is the Register method
[2008/03/21 01:46:09] <TSCHAK> look at Register
[2008/03/21 01:46:26] <shaggy71875_lmce> what makes you work?
[2008/03/21 01:46:27] <bmac2> the MAME_PlugIN::Register?
[2008/03/21 01:46:29] <hari> vectPK_DeviceTemplate.push_back(DEVICETEMPLATE_MAME_Player_CONST);
[2008/03/21 01:46:43] <hari> m_pMedia_Plugin->RegisterMediaPlugin( this, this, vectPK_DeviceTemplate, true );
[2008/03/21 01:46:48] <TSCHAK>      //<-dceag-reg-b->
[2008/03/21 01:46:48] <TSCHAK> / This function will only be used if this device is loaded into the DCE Router's memory space as a plug-in.  Otherwise Connect() will be called from the main()
[2008/03/21 01:46:58] <TSCHAK> hari, and you just nailed it
[2008/03/21 01:47:02] <hari> bmac2: line 111
[2008/03/21 01:47:08] <TSCHAK> hari, but look at what's happening before that
[2008/03/21 01:47:18] <bmac2> yes I see that
[2008/03/21 01:47:19] <hari> it finds its brothers and sisters ;)
[2008/03/21 01:47:45] <TSCHAK> it finds those sister plugins and creates instances of them
[2008/03/21 01:47:47] <TSCHAK> so you can talk to them
[2008/03/21 01:47:49] <TSCHAK> this is UBER important
[2008/03/21 01:48:05] <hari> i see the registration with the media plugin
[2008/03/21 01:48:05] * bmac2 writes down uber important in notes
[2008/03/21 01:48:06] <TSCHAK> because this way you get access to methods so you can keep orbiter screens in sync etc
[2008/03/21 01:48:10] <hari> but whats the orbiter plugin used for?
[2008/03/21 01:48:23] <hari> to figure out which orbiter should display screens?
[2008/03/21 01:48:27] <TSCHAK> hari, for things like Bind to Media Remote
[2008/03/21 01:48:37] <TSCHAK> hari, so that orbiter remotes can stay in synch
[2008/03/21 01:48:42] <hari> k
[2008/03/21 01:48:45] <bmac2> and it gets the deviceteplates too
[2008/03/21 01:48:51] <bmac2> for the media plugins
[2008/03/21 01:48:55] <TSCHAK> yup
[2008/03/21 01:49:09] <bmac2> k next
[2008/03/21 01:49:19] <hari> and why do you intercept EVENT_Menu_Onscreen_CONST
[2008/03/21 01:49:32] <hari> to handle insert coins?
[2008/03/21 01:49:33] <TSCHAK> why do you think?
[2008/03/21 01:49:36] <TSCHAK> well actually
[2008/03/21 01:49:41] <TSCHAK> this isn't completely implemented yet
[2008/03/21 01:49:47] <TSCHAK> i'm short circuiting it slightly
[2008/03/21 01:49:55] <hari> but basically..
[2008/03/21 01:50:06] <TSCHAK> it's so I can trigger the show mame on the orbiter screen
[2008/03/21 01:50:08] <hari> you react to the things happening on the orbiter screen
[2008/03/21 01:50:12] <bmac2> k
[2008/03/21 01:50:31] <TSCHAK> so that's how the PlugIn comes into the picture
[2008/03/21 01:50:37] <bmac2> so I want to do the online radio which was mediatype 6 in the first table
[2008/03/21 01:50:39] <TSCHAK> so now the media plugin KNOWS
[2008/03/21 01:50:46] <bmac2> so these are hte parts i need
[2008/03/21 01:50:59] <hari> knows?
[2008/03/21 01:51:06] <hari> 0.o
[2008/03/21 01:51:08] <TSCHAK> bmac2, you'll probably modify Xine_PlugIn/Player to support media type 6 as well
[2008/03/21 01:51:10] <bmac2> it knows knows
[2008/03/21 01:51:29] <bmac2> yes TSCHAK that is what I thought but it would be nice if radio was kinda seperate?
[2008/03/21 01:51:38] <bmac2> anyway
[2008/03/21 01:51:40] <bmac2> back to this
[2008/03/21 01:51:44] <bmac2> the plugin KNOWS
[2008/03/21 01:51:45] <TSCHAK> bmac2, then sure, another plugin and player pair
[2008/03/21 01:51:47] <bmac2> KNOWS what?
[2008/03/21 01:51:57] <shaggy71875_lmce> i want to stream a videotype to orbiters via mjpeg 10fps and depending on screen 320x240
[2008/03/21 01:52:01] <hari> knows?
[2008/03/21 01:52:04] <hari> ;)
[2008/03/21 01:52:08] <TSCHAK> media plugin gets a pointer to this plugin
[2008/03/21 01:52:16] <bmac2> ok
[2008/03/21 01:52:20] <bmac2> so it knows WHAT to play
[2008/03/21 01:52:22] <TSCHAK> that basically says, "Hey, I'll handle this!"
[2008/03/21 01:52:25] <bmac2> or that when you chose a tyhpe
[2008/03/21 01:52:28] <bmac2> it claims it
[2008/03/21 01:52:43] <bmac2> or chose a file with the right extension it takes over
[2008/03/21 01:52:43] <TSCHAK> yes, now if you were to look at Xine Plugin's commands
[2008/03/21 01:52:46] <TSCHAK> you would see
[2008/03/21 01:52:54] <TSCHAK> commands for Create Media Stream
[2008/03/21 01:52:57] <TSCHAK> Start Media Stream
[2008/03/21 01:52:59] <TSCHAK> Stop Media Stream.
[2008/03/21 01:53:01] <TSCHAK> etc...
[2008/03/21 01:53:02] <hari> TSCHAK: does the mediaplugin also use FindPluginByTemplate?
[2008/03/21 01:53:04] <bmac2> yes
[2008/03/21 01:53:09] <bmac2> saw some of that
[2008/03/21 01:53:09] <TSCHAK> hari, yes.
[2008/03/21 01:53:21] <TSCHAK> let's look at CreateMediaStream
[2008/03/21 01:53:26] <shaggy71875_lmce> well for playing from an orbiter i might have to add more ugg bad as mame plugin
[2008/03/21 01:53:42] <bmac2> where is that TSCHAK ?
[2008/03/21 01:53:46] <bmac2> on the webmin?
[2008/03/21 01:53:50] <bmac2> or in the database?
[2008/03/21 01:53:51] <hari> TSCHAK:  so but we still have to register our media type with the plugin, don't we?
[2008/03/21 01:53:52] <bmac2> or a file?
[2008/03/21 01:54:02] <shaggy71875_lmce> think in Xine template
[2008/03/21 01:54:03] <TSCHAK> bmac2, in the same file
[2008/03/21 01:54:07] <bmac2> k
[2008/03/21 01:54:21] <TSCHAK> hari, no, remember, it's registered with the player
[2008/03/21 01:54:31] <TSCHAK> hari, and the plugin says, "I handle these players"
[2008/03/21 01:54:35] <hari> ah
[2008/03/21 01:54:54] <TSCHAK> it's a many to many media architecture
[2008/03/21 01:54:59] <bmac2> TSCHAK, what line?
[2008/03/21 01:55:06] <TSCHAK> as such the code path can go all over the place
[2008/03/21 01:55:27] <shaggy71875_lmce> and confuse the hell outa anyone looking at the code
[2008/03/21 01:55:27] <TSCHAK> bmac2, search for CreateMediaStream
[2008/03/21 01:56:05] <TSCHAK> class MediaStream *MAME_PlugIn::CreateMediaStream( class MediaHandlerInfo *pMediaHandlerInfo, int iPK_MediaProvider, vector<class EntertainArea *> &vectEntertainArea, MediaDevice *pMediaDevice, int iPK_Users, deque<MediaFile *> *dequeFilenames, int StreamID )
[2008/03/21 01:56:06] <TSCHAK> yup
[2008/03/21 01:56:10] <bmac2> line 259
[2008/03/21 01:56:30] <TSCHAK> now look at what we do
[2008/03/21 01:56:33] <bmac2> creates a class of media
[2008/03/21 01:56:39] <TSCHAK> we create our custom media stream
[2008/03/21 01:56:41] <bmac2> called pMAMEMediaStream
[2008/03/21 01:56:44] <TSCHAK> yup
[2008/03/21 01:56:51] <TSCHAK> that's in MAMEMediaStream.cpp
[2008/03/21 01:56:57] <bmac2> see I almost sound like I got a clue
[2008/03/21 01:56:59] <bmac2> lol
[2008/03/21 01:57:02] <TSCHAK> the base class is MediaStream.cpp in Media_Plugin/
[2008/03/21 01:57:15] <TSCHAK> go ahead and open MediaStream.cpp too
[2008/03/21 01:57:54] <TSCHAK> see?
[2008/03/21 01:58:04] <bmac2> andok got that open
[2008/03/21 01:58:35] <TSCHAK> so basically our media stream
[2008/03/21 01:58:37] <TSCHAK> gets its own type
[2008/03/21 01:58:45] <TSCHAK> and defines a few basic capabilities
[2008/03/21 01:58:59] <TSCHAK> including ContainsVideo
[2008/03/21 01:59:02] <TSCHAK> which sets true
[2008/03/21 01:59:30] <TSCHAK> but as you can see
[2008/03/21 01:59:33] <TSCHAK> i just subclass it
[2008/03/21 01:59:38] <TSCHAK> and return true anyway
[2008/03/21 01:59:46] <TSCHAK> see, ContainsAudio and ContainsVideo are special
[2008/03/21 01:59:49] <TSCHAK> because they determine whether
[2008/03/21 01:59:51] <TSCHAK> guess what?
[2008/03/21 01:59:54] <TSCHAK> you turn on the audio
[2008/03/21 01:59:55] <TSCHAK> or the video
[2008/03/21 01:59:56] <TSCHAK> pipe
[2008/03/21 01:59:57] <TSCHAK> :-)
[2008/03/21 02:00:01] <bmac2> or both?
[2008/03/21 02:00:04] <TSCHAK> or both
[2008/03/21 02:00:09] <TSCHAK> i should implement containsaudio too
[2008/03/21 02:00:11] <TSCHAK> but it's already true
[2008/03/21 02:00:12] <TSCHAK> ;-)
[2008/03/21 02:00:28] <bmac2> ok
[2008/03/21 02:00:33] <bmac2> so what else we have to do?
[2008/03/21 02:00:34] <hari> audio is always true?
[2008/03/21 02:00:38] <TSCHAK> making sense?
[2008/03/21 02:00:39] <bmac2> now that we been around the world
[2008/03/21 02:00:41] <TSCHAK> yeah
[2008/03/21 02:00:41] <bmac2> lol
[2008/03/21 02:00:42] <bmac2> yes
[2008/03/21 02:00:45] <bmac2> makes sense
[2008/03/21 02:00:52] <TSCHAK> oh we still have some more code to wade through
[2008/03/21 02:00:58] <bmac2> ok
[2008/03/21 02:01:04] <TSCHAK> i was opening mamemediastream because this contains capabilities the plugin needs to know
[2008/03/21 02:05:56] <TSCHAK> hari, so yeah, at this point, we basically need to implement CreateMediaStream
[2008/03/21 02:06:01] <TSCHAK> hari, which you can go ahead and look through
[2008/03/21 02:07:23] <TSCHAK> okay so
[2008/03/21 02:07:27] <TSCHAK> let's look at CreateMediaStream
[2008/03/21 02:07:39] <hari> thats cool: FindMediaDeviceForEntertainArea
[2008/03/21 02:07:47] <TSCHAK> is there anything I need to explain here?
[2008/03/21 02:07:57] <hari> gimme some seconds
[2008/03/21 02:08:01] <TSCHAK> basically the whole idea here
[2008/03/21 02:08:07] <TSCHAK> is to create the media stream of our media stream type
[2008/03/21 02:08:19] <TSCHAK> call find device for entertainment area to get all the devices that map to that
[2008/03/21 02:08:45] <TSCHAK> and return the media stream
[2008/03/21 02:08:51] <TSCHAK> which basically goes right back into StartMedia
[2008/03/21 02:09:02] <hari> yep
[2008/03/21 02:09:09] <TSCHAK> these are classes that are overridden from Media_Plugin
[2008/03/21 02:09:31] <bmac2> so the media_Plugin overrides all else?
[2008/03/21 02:09:34] <bmac2> or does it depend?
[2008/03/21 02:09:42] <bmac2> on what it is?
[2008/03/21 02:10:04] <TSCHAK> all of the classes in here derive from Media_Plugin
[2008/03/21 02:10:27] <bmac2> ok
[2008/03/21 02:10:30] <bmac2> next then
[2008/03/21 02:10:43] <hari> TSCHAK:         SendCommand(CMD_Play_Media);
[2008/03/21 02:10:57] <TSCHAK> yup
[2008/03/21 02:11:02] <TSCHAK> if you look immeidately above it
[2008/03/21 02:11:05] <TSCHAK> you see the formed command
[2008/03/21 02:11:08] <hari> aah
[2008/03/21 02:11:28] <TSCHAK> as you can see
[2008/03/21 02:11:29] <TSCHAK> it's just
[2008/03/21 02:11:30] <TSCHAK> another
[2008/03/21 02:11:32] <TSCHAK> DCE command
[2008/03/21 02:11:33] <TSCHAK> ;-)
[2008/03/21 02:11:44] <bmac2> ok don't see the CMD_Play stuff
[2008/03/21 02:11:47] <bmac2> what file is that in?
[2008/03/21 02:12:06] <hari> DCE == Device Commands Everywhere ;)
[2008/03/21 02:12:37] <hari> bmac2: MAME_PlugIn.cpp
[2008/03/21 02:12:49] <bmac2> k
[2008/03/21 02:13:08] <hari> :362
[2008/03/21 02:13:20] <bmac2> got it
[2008/03/21 02:13:20] <TSCHAK> StopMedia does the opposite
[2008/03/21 02:13:23] <TSCHAK> kills the handles etc
[2008/03/21 02:13:27] <TSCHAK> but you can see in MAME_Player
[2008/03/21 02:13:35] <TSCHAK> that this is where I talk to MAME
[2008/03/21 02:13:54] <TSCHAK> using App Server, to launch MAME
[2008/03/21 02:14:04] <bmac2> let me explain this to see if i got it right
[2008/03/21 02:14:10] <TSCHAK> and my WindowUtils lib, to send keypresses to the mame window
[2008/03/21 02:14:11] <TSCHAK> bmac2, ok
[2008/03/21 02:14:14] <bmac2> you put these sections in ONLY for the commands you want
[2008/03/21 02:14:24] <bmac2> and below it makes sure that there is a proper device
[2008/03/21 02:14:27] <bmac2> before it sends the media
[2008/03/21 02:14:33] <bmac2> i.e.  if there is no screeen
[2008/03/21 02:14:37] <bmac2> it won't send video
[2008/03/21 02:14:42] <bmac2> etc
[2008/03/21 02:14:46] <TSCHAK> yes.
[2008/03/21 02:14:47] <bmac2> k
[2008/03/21 02:14:50] <bmac2> with you then
[2008/03/21 02:14:53] <TSCHAK> you have to program defensively
[2008/03/21 02:14:59] <bmac2> and you need ONE section for EVERY command
[2008/03/21 02:15:05] <TSCHAK> yes.
[2008/03/21 02:15:17] <bmac2> this almost makes sense to me
[2008/03/21 02:15:42] <TSCHAK> you need to make a DCE device
[2008/03/21 02:15:46] <TSCHAK> even if it's just a dummy device
[2008/03/21 02:15:49] <TSCHAK> that says HI I'M ON
[2008/03/21 02:15:49] <bmac2> k
[2008/03/21 02:15:51] <TSCHAK> HI I'm OFF
[2008/03/21 02:15:57] <TSCHAK> so you'll understand what's going on
[2008/03/21 02:16:12] <TSCHAK> you see
[2008/03/21 02:16:17] <TSCHAK> the Player device
[2008/03/21 02:16:19] <TSCHAK> is ALWAYS running
[2008/03/21 02:16:25] <TSCHAK> do you guys understand that?
[2008/03/21 02:16:28] <hari> yes
[2008/03/21 02:16:31] <bmac2> yes
rock your home - http://www.agocontrol.com home automation

hari

  • Administrator
  • LinuxMCE God
  • *****
  • Posts: 2428
    • View Profile
    • ago control
Re: Picture Player / Plugin Workshop
« Reply #4 on: March 21, 2008, 03:15:15 am »
Quote
[2008/03/21 02:16:34] <TSCHAK> both the plugin and the player are always running
[2008/03/21 02:16:36] <bmac2> it has to be running
[2008/03/21 02:16:38] <hari> it registers with the dcerouter
[2008/03/21 02:16:40] <TSCHAK> because they have to accept commands
[2008/03/21 02:16:41] <bmac2> to check to see if it is needed
[2008/03/21 02:16:43] <TSCHAK> yes
[2008/03/21 02:16:53] <bmac2> and check commands against the database of what it "owns"
[2008/03/21 02:16:57] <TSCHAK> yes
[2008/03/21 02:17:25] <TSCHAK> now once you've implemented the plugin and player pair at a base level
[2008/03/21 02:17:36] <TSCHAK> assuming that you don't put anything inside the player
[2008/03/21 02:17:37] <TSCHAK> just stubs
[2008/03/21 02:17:38] <hari> bmac2: you may want to look at that later: http://forum.linuxmce.org/index.php?topic=3675.0
[2008/03/21 02:17:45] <TSCHAK> you'll see an orbiter playing menu
[2008/03/21 02:17:53] <TSCHAK> with your left hand menu
[2008/03/21 02:17:59] <TSCHAK> and the photo screensaver stopped
[2008/03/21 02:18:11] <TSCHAK> and if you look on the floorplan
[2008/03/21 02:18:12] <TSCHAK> guess what?
[2008/03/21 02:18:26] <hari> the media stream
[2008/03/21 02:18:28] <TSCHAK> the picture's filename will be displayed
[2008/03/21 02:18:43] <TSCHAK> also, if you click on multiple pictures
[2008/03/21 02:18:46] <TSCHAK> the playlist will build up
[2008/03/21 02:19:13] <TSCHAK> and since you're using the 4964 designobj which has the video commands in there
[2008/03/21 02:19:17] <TSCHAK> you can manage the playlist
[2008/03/21 02:19:18] <TSCHAK> save it
[2008/03/21 02:19:22] <TSCHAK> etc..etc..etc..
[2008/03/21 02:19:24] <bmac2> k
[2008/03/21 02:19:26] <hari> all for free
[2008/03/21 02:19:28] <bmac2> makes sense
[2008/03/21 02:19:30] <TSCHAK> and the commands will do the right thing.
[2008/03/21 02:19:40] * bmac2 wonders about hari's definition of FREE?
[2008/03/21 02:19:47] <TSCHAK> hehe
[2008/03/21 02:19:49] <TSCHAK> soo
[2008/03/21 02:19:52] <TSCHAK> with this
[2008/03/21 02:19:58] <bmac2> ok we got it all set up life is good
[2008/03/21 02:20:00] <TSCHAK> i hope, that the media subsystem makes more sense now
[2008/03/21 02:20:02] <bmac2> what is left?
[2008/03/21 02:20:15] <TSCHAK> basically, implementing the player commands
[2008/03/21 02:20:23] <TSCHAK> that's about it
[2008/03/21 02:20:26] <bmac2> ok
[2008/03/21 02:20:35] <TSCHAK> of course
[2008/03/21 02:20:37] <bmac2> and the commands we need for the pictures are
[2008/03/21 02:20:39] <TSCHAK> we will in the long run
[2008/03/21 02:20:40] <bmac2> forward one
[2008/03/21 02:20:42] <hari> and ripping the fading code out of the Photo_Screensaver ;)
[2008/03/21 02:20:43] <bmac2> back one
[2008/03/21 02:20:47] <bmac2> pause
[2008/03/21 02:20:49] <bmac2> screenshow
[2008/03/21 02:20:57] <bmac2> time for each pic in screenshow
[2008/03/21 02:21:13] <TSCHAK> things like time, etc... are implemented as device data
[2008/03/21 02:21:17] <bmac2> k
[2008/03/21 02:21:21] <TSCHAK> for defaults
[2008/03/21 02:21:35] <TSCHAK> those can be gotten via the DEVICEDATA_ macros
[2008/03/21 02:21:38] <TSCHAK> but also
[2008/03/21 02:21:39] <bmac2> but don't you want it to be a choosable value?
[2008/03/21 02:21:45] <TSCHAK> i'm getting to that
[2008/03/21 02:21:48] <bmac2> lol
[2008/03/21 02:21:49] <TSCHAK> this sets a default baseline
[2008/03/21 02:21:50] <bmac2> sorry
[2008/03/21 02:21:52] <bmac2> running ahead
[2008/03/21 02:21:57] <bmac2> in my mind
[2008/03/21 02:22:01] <TSCHAK> this system makes me think about details
[2008/03/21 02:22:12] <TSCHAK> because if you don't fill in the details
[2008/03/21 02:22:13] <TSCHAK> guess what?
[2008/03/21 02:22:16] <TSCHAK> SHIT SEGFAULTS
[2008/03/21 02:22:17] <TSCHAK> ;-)
[2008/03/21 02:22:19] <bmac2> if fubars?
[2008/03/21 02:22:30] <bmac2> kicks your dog?
[2008/03/21 02:22:32] <TSCHAK> there is one other thing I wish to mention
[2008/03/21 02:22:33] <hari> and burns your kitchen sink?
[2008/03/21 02:22:38] <TSCHAK> there is a special Device Data parameter
[2008/03/21 02:22:44] <TSCHAK> if you look in the device data for Xine Player
[2008/03/21 02:22:45] <bmac2> how special is it?
[2008/03/21 02:22:50] <hari> implements dce?
[2008/03/21 02:22:54] <TSCHAK> you'll see a parameter called Name
[2008/03/21 02:23:03] <TSCHAK> this has to be implemented for ALL media players
[2008/03/21 02:23:09] <TSCHAK> HAS TO
[2008/03/21 02:23:20] <TSCHAK> it corresponds to a WM_CLASS tuple
[2008/03/21 02:23:20] <hari> #156 Name(string)
[2008/03/21 02:23:25] <TSCHAK> yes
[2008/03/21 02:23:28] <bmac2> ok the name string?
[2008/03/21 02:23:30] <bmac2> ok
[2008/03/21 02:23:36] <bmac2> what does that do?
[2008/03/21 02:23:37] <TSCHAK> this is needed so that Orbiter
[2008/03/21 02:23:38] <hari> ah, so that goes to front..
[2008/03/21 02:23:41] <TSCHAK> can manage the window that we display
[2008/03/21 02:23:41] <TSCHAK> :-)
[2008/03/21 02:23:44] <hari> by the window manager
[2008/03/21 02:23:47] <bmac2> ok
[2008/03/21 02:23:49] <TSCHAK> yes, by wmctrl
[2008/03/21 02:23:53] <bmac2> it has to know WHAT name is is calling
[2008/03/21 02:23:55] <TSCHAK> orbiter uses wmctrl to shift stuff around
[2008/03/21 02:23:58] <bmac2> k
[2008/03/21 02:24:08] <TSCHAK> this is so that it can overlay the orbiter menu correctly etc
[2008/03/21 02:24:21] <TSCHAK> and resize the window
[2008/03/21 02:24:22] <TSCHAK> see
[2008/03/21 02:24:36] <TSCHAK> the application desktop object (see HADesigner), may be different sizes
[2008/03/21 02:24:36] <bmac2> and since we are stealing the xine stuff it will work in the current screens already designed
[2008/03/21 02:24:42] <bmac2> so we don't have to design new ones
[2008/03/21 02:24:52] <TSCHAK> yes, to a point.
[2008/03/21 02:25:00] <TSCHAK> we're actually using photo_screensaver
[2008/03/21 02:25:04] <bmac2> k
[2008/03/21 02:25:12] <TSCHAK> the boilerplate comes from xine_player/plugin
[2008/03/21 02:25:18] <bmac2> but we avoid building brand new screens from scratch
[2008/03/21 02:25:21] <TSCHAK> yes
[2008/03/21 02:25:36] <bmac2> ok
[2008/03/21 02:25:39] <bmac2> what else?
[2008/03/21 02:25:44] <TSCHAK> thinking
[2008/03/21 02:25:45] <bmac2> to make our notes complete?
[2008/03/21 02:25:57] <TSCHAK> god i am rattling this all out of my brain
[2008/03/21 02:26:58] <TSCHAK> remember the speed_OSD screen? ;-)
[2008/03/21 02:27:00] <bmac2> yes
[2008/03/21 02:27:03] <TSCHAK> okay
[2008/03/21 02:27:06] <TSCHAK> it emits
[2008/03/21 02:27:10] <TSCHAK> Change Playback Speed command
[2008/03/21 02:27:19] <bmac2> yes that was in a table too I believe
[2008/03/21 02:27:22] <TSCHAK> which has a value of 1, 10, 100, 1000, 10000
[2008/03/21 02:27:22] <TSCHAK> etc.
[2008/03/21 02:27:26] <bmac2> yes
[2008/03/21 02:27:29] <TSCHAK> you use that
[2008/03/21 02:27:31] <bmac2> in what?  milliseconds?
[2008/03/21 02:27:35] <TSCHAK> doesn't matter
[2008/03/21 02:27:37] <TSCHAK> arbitrary value
[2008/03/21 02:27:40] <bmac2> k
[2008/03/21 02:27:46] <TSCHAK> we change it to whatever we want
[2008/03/21 02:27:54] <bmac2> and that does what to the stream?
[2008/03/21 02:28:04] <TSCHAK> it doesn't do anything to the stream
[2008/03/21 02:28:18] <TSCHAK> media plugin just sends a command to the player
[2008/03/21 02:28:21] <TSCHAK> to say "Change Playback Speed"
[2008/03/21 02:28:22] <bmac2> oh ok
[2008/03/21 02:28:31] <TSCHAK> even Pause and Play, are Change Playback Speed commands once the thing is running.
[2008/03/21 02:28:43] <bmac2> makes sense treats them all the same
[2008/03/21 02:28:53] <TSCHAK> so now
[2008/03/21 02:28:54] <bmac2> instead of seperate command structures
[2008/03/21 02:28:55] <shaggy71875_lmce> and rewind is also?
[2008/03/21 02:28:56] <bmac2> so it is cleaner
[2008/03/21 02:28:56] <TSCHAK> we have our speed control.
[2008/03/21 02:28:59] <bmac2> k
[2008/03/21 02:29:03] <TSCHAK> shaggy71875_lmce, yes, change playback speed.
[2008/03/21 02:29:08] <shaggy71875_lmce> or is it a - intiger
[2008/03/21 02:29:15] <TSCHAK> negative integer
[2008/03/21 02:29:23] <TSCHAK> it's a signed in
[2008/03/21 02:29:24] <TSCHAK> int
[2008/03/21 02:29:24] <bmac2> but still a change playback speed
[2008/03/21 02:29:27] <TSCHAK> yes
[2008/03/21 02:29:35] <TSCHAK> so now you have
[2008/03/21 02:29:37] <shaggy71875_lmce> hmm
[2008/03/21 02:29:39] <TSCHAK>  change playback speed with the remote
[2008/03/21 02:29:44] <TSCHAK> no matter which remote you use
[2008/03/21 02:29:53] <shaggy71875_lmce> or gyro?
[2008/03/21 02:29:53] <TSCHAK> ;-)
[2008/03/21 02:29:55] <TSCHAK> yes
[2008/03/21 02:30:08] <TSCHAK> now, we also have
[2008/03/21 02:30:08] <bmac2> lol
[2008/03/21 02:30:13] <TSCHAK> one last detail
[2008/03/21 02:30:15] <TSCHAK> we can set position
[2008/03/21 02:30:16] <bmac2> k
[2008/03/21 02:30:16] <TSCHAK> in this case
[2008/03/21 02:30:21] <TSCHAK>  it will be the picture in the stream
[2008/03/21 02:30:23] <TSCHAK> we can use that
[2008/03/21 02:30:28] <TSCHAK> to populate the transport bar
[2008/03/21 02:30:29] <TSCHAK> :-)
[2008/03/21 02:30:43] <TSCHAK> and from that, we have full transport control
[2008/03/21 02:30:46] <TSCHAK> and um
[2008/03/21 02:30:54] <TSCHAK> oh yeah, well, that's the other thing
[2008/03/21 02:30:57] <bmac2> lol
[2008/03/21 02:30:58] <TSCHAK> we'll probably use SectionedMedia
[2008/03/21 02:31:02] <TSCHAK> because we'll treat it
[2008/03/21 02:31:06] <TSCHAK> as a DVD with chapters, more or less.
[2008/03/21 02:31:16] <bmac2> as each picture as a seperate section
[2008/03/21 02:31:17] <TSCHAK> which means, that playlisst commands just cause a jump to playlist command
[2008/03/21 02:31:26] <TSCHAK> which can be dealt with
[2008/03/21 02:31:39] <TSCHAK> there's all sorts of stuff
[2008/03/21 02:31:40] <bmac2> ok
[2008/03/21 02:31:42] <TSCHAK> look in Media Plugins
[2008/03/21 02:31:44] <TSCHAK> Plugin
[2008/03/21 02:31:44] <bmac2> be bakc in a while
[2008/03/21 02:31:45] <TSCHAK> Study it
[2008/03/21 02:31:46] <TSCHAK> know it
[2008/03/21 02:31:48] <bmac2> thanks TSCHAK
[2008/03/21 02:31:50] <TSCHAK> you have to know it
[2008/03/21 02:31:51] <bmac2> that was good
[2008/03/21 02:31:56] <TSCHAK> bmac2, you're welcome.
[2008/03/21 02:31:57] <shaggy71875_lmce> will each "chapter" we use be another song in the playlist or chapters be a time frame within one song
[2008/03/21 02:32:03] <hari> yeah, THANK YOU VERY MUCH!!!
[2008/03/21 02:32:14] <hari> that made many things clear..
[2008/03/21 02:32:19] <TSCHAK> shaggy71875_lmce, that will have to be decided after we get the mechanics working for just pictures.
[2008/03/21 02:32:27] <TSCHAK> god i hope it made sense
[2008/03/21 02:32:33] <shaggy71875_lmce> ok
[2008/03/21 02:32:38] <TSCHAK> there is a LOT to take in
[2008/03/21 02:32:39] <TSCHAK> I know
[2008/03/21 02:32:42] <TSCHAK> and I am SURE
[2008/03/21 02:32:44] <TSCHAK> i left some shit out
rock your home - http://www.agocontrol.com home automation

totallymaxed

  • LinuxMCE God
  • ****
  • Posts: 4660
  • Smart Home Consulting
    • View Profile
    • Dianemo - at home with technology
Re: Picture Player / Plugin Workshop
« Reply #5 on: March 21, 2008, 12:41:49 pm »
Nice way to document the conversation you guys had about this... ;-)

...and to see the incredible expertise there is in this community!

Andrew
Andy Herron,
CHT Ltd

For Dianemo/LinuxMCE consulting advice;
@herron on Twitter, totallymaxed+inquiries@gmail.com via email or PM me here.

Get Dianemo-Rpi2 ARM Licenses http://forum.linuxmce.org/index.php?topic=14026.0

Get RaspSqueeze-CEC or Raspbmc-CEC for Dianemo/LinuxMCE: http://wp.me/P4KgIc-5P

Facebook: https://www.facebook.com/pages/Dianemo-Home-Automation/226019387454465

http://www.dianemo.co.uk

andymck

  • Regular Poster
  • **
  • Posts: 23
    • View Profile
Re: Picture Player / Plugin Workshop
« Reply #6 on: March 21, 2008, 01:14:19 pm »
Makes interesting reading, def a lot to take in...following with interest

andymck

  • Regular Poster
  • **
  • Posts: 23
    • View Profile
Re: Picture Player / Plugin Workshop
« Reply #7 on: March 21, 2008, 11:10:30 pm »
If any of you can can see any way in which i might be able assist in any way with this i would be happy to do what i can.  I am a developer with reasonably good c++ skills but dont have any real knowledge of this environment and so not sure how much i could contribute in the short term but if you need any testing etc please let me know.  I plan to setup a development environment over the weekend and start looking at the inards in any case....

Andy


tkmedia

  • wants to work for LinuxMCE
  • **
  • Posts: 937
    • View Profile
    • LMCECompatible
Re: Picture Player / Plugin Workshop
« Reply #8 on: March 21, 2008, 11:29:30 pm »
Ask again in chat area if u have not already
My Setup http://wiki.linuxmce.org/index.php/User:Tkmedia

For LinuxMce compatible  systems and accessories
http://lmcecompatible.com/

totallymaxed

  • LinuxMCE God
  • ****
  • Posts: 4660
  • Smart Home Consulting
    • View Profile
    • Dianemo - at home with technology
Re: Picture Player / Plugin Workshop
« Reply #9 on: March 22, 2008, 01:36:14 pm »
If any of you can can see any way in which i might be able assist in any way with this i would be happy to do what i can.  I am a developer with reasonably good c++ skills but dont have any real knowledge of this environment and so not sure how much i could contribute in the short term but if you need any testing etc please let me know.  I plan to setup a development environment over the weekend and start looking at the inards in any case....

Andy

Hi Andy,

Great to see you here Andy. We need more developers to get involved and be active here - so welcome!

All the best

Andrew (or Andy ;-) )
Andy Herron,
CHT Ltd

For Dianemo/LinuxMCE consulting advice;
@herron on Twitter, totallymaxed+inquiries@gmail.com via email or PM me here.

Get Dianemo-Rpi2 ARM Licenses http://forum.linuxmce.org/index.php?topic=14026.0

Get RaspSqueeze-CEC or Raspbmc-CEC for Dianemo/LinuxMCE: http://wp.me/P4KgIc-5P

Facebook: https://www.facebook.com/pages/Dianemo-Home-Automation/226019387454465

http://www.dianemo.co.uk