| 1 | WHY |
|---|
| 2 | |
|---|
| 3 | These patches implement detection of programs whose broadcaster claims |
|---|
| 4 | will overflow their listed timeslot. This can only work if you're |
|---|
| 5 | using Schedules Direct. They make no actual change to the way |
|---|
| 6 | scheduling works at all---they only give information to the user. |
|---|
| 7 | |
|---|
| 8 | Note that, since this just affects the DB and UI (and, in fact, only |
|---|
| 9 | MythWeb---there's no implementation for mythfrontend since I never use |
|---|
| 10 | that to do scheduling) its impact should be zero if only the DB half |
|---|
| 11 | is installed, except for a trivial (~30K in my listings) increase in |
|---|
| 12 | the size of the DB. The UI half only affects the display of the |
|---|
| 13 | detailed recording info for a particular recording, whether or not |
|---|
| 14 | it's been scheduled to record, and only changes that behavior if it |
|---|
| 15 | looks like the recording is going to overflow its timeslot. This |
|---|
| 16 | means, alas, that it won't help you if some recording that will |
|---|
| 17 | overflow was found automatically via a Power Search or a normal |
|---|
| 18 | scheduling rule, unless for some reason you happen to be looking at |
|---|
| 19 | its detailed info anyway. But it -will- help you if you're scheduling |
|---|
| 20 | it by hand, as is likely on a movie channel. |
|---|
| 21 | |
|---|
| 22 | The most important part of the patch is to preserve the incoming data |
|---|
| 23 | from SD, so that Myth can use it later in its UI. Since the data is |
|---|
| 24 | preserved in the DB, MySQL queries can also pull it out, independent |
|---|
| 25 | of Myth itself. |
|---|
| 26 | |
|---|
| 27 | This ideas was controversial when suggested on the myth lists, but I'm |
|---|
| 28 | including this proof-of-concept here so people know what I'm talking |
|---|
| 29 | about, in the hopes that at least the code that sticks stuff into the |
|---|
| 30 | DB will make it into a release. These patches certainly won't work |
|---|
| 31 | for everyone---I've been told (but have not seen personally) that some |
|---|
| 32 | broadcasters sometimes claim outrageously long runtimes (many hours |
|---|
| 33 | too long)--but these patches have been saving my bacon for months now |
|---|
| 34 | with Sundance, IFC, and TCM, to name a few, all of which tend to very |
|---|
| 35 | occasionally air things that are from several minutes to half an hour |
|---|
| 36 | (!) longer than their listed timeslot. Having to add up to half an |
|---|
| 37 | hour of postroll just to catch these is ridiculous---it eats up |
|---|
| 38 | storage for the 99% of the time when this isn't necessary, and---much |
|---|
| 39 | worse---eats up tuners, too, since most movie channels have rather |
|---|
| 40 | random start/end times, and excessive padding eats into tuners that |
|---|
| 41 | might otherwise be needed to record things from other channels that |
|---|
| 42 | tend to start on the hour or half-hour. And when one's tuners are |
|---|
| 43 | actual physical cable boxes feeding analog capture cards---hence |
|---|
| 44 | multirec is unavailable---this starts to generate conflicts pretty |
|---|
| 45 | fast. So even though I routinely pad things on movie channels by 5-10 |
|---|
| 46 | minutes at the end, I've often been screwed by this -still- not being |
|---|
| 47 | enough---even though it's usually way too much. Hence, these patches. |
|---|
| 48 | |
|---|
| 49 | INSTALLATION |
|---|
| 50 | |
|---|
| 51 | This patch does NOT include the necessary modifications to dbcheck.cpp |
|---|
| 52 | to change the relevant table schemas! This is, in part, because any |
|---|
| 53 | such stanza would just have to be changed to match the schema current |
|---|
| 54 | when the patch is actually applied, if ever. It must contain the |
|---|
| 55 | following MySQL: |
|---|
| 56 | |
|---|
| 57 | ALTER TABLE program ADD COLUMN sd_runtime SMALLINT UNSIGNED DEFAULT '0' NOT NULL; |
|---|
| 58 | ALTER TABLE recordedprogram ADD COLUMN sd_runtime SMALLINT UNSIGNED DEFAULT '0' NOT NULL; |
|---|
| 59 | |
|---|
| 60 | WHAT |
|---|
| 61 | |
|---|
| 62 | Four files are attached: |
|---|
| 63 | |
|---|
| 64 | (a) Example data from SD that shows the problem, and some simple shell |
|---|
| 65 | scripting to show how, once the data's in the Myth DB, it can be |
|---|
| 66 | manipulated. |
|---|
| 67 | (b) An UNTESTED patch against current SVN (revision 21445). It's |
|---|
| 68 | untested because I'm not currently running trunk, and didn't |
|---|
| 69 | expect only 72 hours of notice on the feature freeze. Oh well. |
|---|
| 70 | If this patch isn't immediately closed as a bad idea, I will work |
|---|
| 71 | up a tested and working version for trunk, but I won't waste my |
|---|
| 72 | tiem if somebody closes the ticket and says this will never go in. |
|---|
| 73 | [But if someone does this, I will pout and be quietly sad. :( ] |
|---|
| 74 | I'll probably need some hints for the Ajaxified current MythWeb, |
|---|
| 75 | and perhaps a volunteer for the mythfrontend piece of the UI, |
|---|
| 76 | which I haven't examined at all yet. |
|---|
| 77 | (c) A TESTED AND WORKING proof of concept, both for the DB side and |
|---|
| 78 | the UI side, in a very old version of Myth. I've been using this |
|---|
| 79 | version of the patch for months and it's worked excellently. |
|---|
| 80 | (d) A quick explanation of why I'm running an old version. For people |
|---|
| 81 | who want to make an issue of it (you know who you are), read it. |
|---|
| 82 | For people who don't care, skip it. It's here to keep people from |
|---|
| 83 | flaming on the mailing list about it and wasting everyone's time. |
|---|
| 84 | |
|---|
| 85 | OTHER NOTES |
|---|
| 86 | |
|---|
| 87 | Note that the MythWeb example I've supplied doesn't add sd_runtime to |
|---|
| 88 | the Myth protocol; it just makes direct calls to the DB to get the |
|---|
| 89 | info it needs. I did this to minimize the invasiveness, and because |
|---|
| 90 | plenty of other parts of MythWeb in that version do the same thing. |
|---|
| 91 | If this actually goes into trunk, and if it's deemed important, it's |
|---|
| 92 | straightforward to add sd_runtime to the protocol and have MythWeb get |
|---|
| 93 | it that way---but it requires a protocol bump as well, of course. |
|---|
| 94 | (I assume that making the frontend know about this requires such an |
|---|
| 95 | addition anyway.) |
|---|