[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
list.
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.
Instructions/notes:
* 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
thing).
* Writes the decoded objects into the database or the filesystem. For the
database, you have to create these tables:
CREATE TABLE `dsmcc_objects` (
`id` INT NOT NULL AUTO_INCREMENT ,
`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` (
`id` INT NOT NULL,
`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.
Cheers!
Jon
-------------- 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