[mythtv] DSM-CC object carousel parser and storage patch for 0.18.1

John Papaioannou john.papaioannou at gmail.com
Mon Sep 19 18:25:27 UTC 2005

Hi everyone,

I 've been trying to post in this list for a couple of weeks now with an 
attachment of 64kb. However no moderator approval seems to be forthcoming, 
and I didn't get any feedback at all, so I was wondering what is the correct 
course of action if someone wants to post a not-so-smallish patch in this 

Following is my last email as I wrote it at the time, minus the attachment 
with the code. If anyone is interested in it, or can tell me what I should 
be doing to post the patch, please say so. :-)

The attachment is an implementation of a DSM-CC data and object carousel 
decoder for Myth, which also provides persistent storage either in the db or 
the local filesystem. Architecture is not too shabby, and especially the 
storage component is very easily pluggable.


* This is supposed to work with the 0.18.1 download package. I avoided SVN 
because I didn't want to risk suffering from any instabilities in the source 
while doing the coding.

* One zip, several files that all go into /libs/libmythtv/. Small changes to 
a few Myth files, most of the code is self-contained (engineering decision 

* Writes the decoded objects into the database or the filesystem. For the 
database, you have to create these tables:

CREATE TABLE `dsmcc_objects` (
`download_id` INT NOT NULL ,
`module_id` MEDIUMINT NOT NULL ,
`module_version` MEDIUMINT NOT NULL ,
`object_key` BINARY( 4 ) NOT NULL ,
`object_name` VARBINARY(255) NOT NULL ,
`object_type` ENUM( 'srg', 'dir', 'fil', 'str', 'ste' ) NOT NULL ,
`parent_id` INT NOT NULL ,
PRIMARY KEY ( `id` ) ,
INDEX ( `download_id` , `module_id` , `object_key` )

CREATE TABLE `dsmcc_file_contents` (
`contents` LONGBLOB NOT NULL ,
PRIMARY KEY ( `id` )

* For the filesystem, you have to change 
DSM_CC::CarouselTracker<DSM_CC::MythDatabaseStorage> in siparser.h with 
DSM_CC::CarouselTracker<DSM_CC::FilesystemStorage>. Then also uncomment the 
call to CarouselTracker::SetStorageRoot in siparser.cpp to tell it where you 
want the files written.

* I know that several things could be done in a better way. However, there 
was only so much time (I 'm not saying how much just in case anyone involved 
in grading sees this :P) and I had to focus on making it work correctly, not 
polishing everything out. Hopefully someone will find this interesting 
enough and it will evolve.

* A copy of my thesis would probably help a bit as it discusses the design 
extensively, but I don't know if posting big attachments here is considered 
OK. If anyone's interested I 'll gladly send it over.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mythtv.org/pipermail/mythtv-dev/attachments/20050919/b89f20e6/attachment.htm

More information about the mythtv-dev mailing list