Opened 13 years ago

Closed 12 years ago

Last modified 12 years ago

#3326 closed task (fixed)

Implement multiple recordings per transport

Reported by: danielk Owned by: danielk
Priority: minor Milestone: 0.21
Component: mythtv Version: head
Severity: low Keywords:
Cc: Ticket locked: no

Description

This is a task ticket for making multiple recordings per transport possible in MythTV.

Attachments (14)

3326-isbusy-v1.patch (34.8 KB) - added by danielk 12 years ago.
Adds TVRec::GetBusyInput?() and an input switching menu as a use case
3326-pendingrecording-v1.patch (18.3 KB) - added by danielk 12 years ago.
Extends pending recording group with some input group smarts
3326-dvb-radio-v1.patch (8.7 KB) - added by danielk 12 years ago.
Proof of concept patch for fixing DVB Radio in multirec branch
multirecmjl.patch (5.3 KB) - added by martin@… 12 years ago.
Forces scheduler to check all cards, rather than settling on the first with no conflicts, and choose one with most input group overlap if possible.
mytharchive.patch (513 bytes) - added by bradley.kite@… 12 years ago.
Patch to allow mytharchive to complile (installs required headers)
backend.log.gz (141.7 KB) - added by bradley.kite@… 12 years ago.
Back-end failures when channel ends, MHEG starts.
gdb.txt (36.8 KB) - added by markus 12 years ago.
multi-sched-multimap-v4.patch (28.2 KB) - added by danielk 12 years ago.
Various scheduling optimizations, some good, some bad.
3326-multimap-sched-v1.patch (12.4 KB) - added by danielk 12 years ago.
Adds a range map for finding conflicts, 3% speedup
multirecmjl-v2.patch (5.0 KB) - added by danielk 12 years ago.
Cleaned up version of martin's patch, I don't like this approach so it's unlikely that we'll use it but I cleaned it up when reviewing it…
mbe.log (105.8 KB) - added by jochen 12 years ago.
mbe.log
mbe2.log (59.6 KB) - added by jochen 12 years ago.
mbe2.log
3326-inputgroupbug-v1.patch (9.8 KB) - added by danielk 12 years ago.
Possible bug for a bug where recordings sharing an input group are canceled when they shouldn't (untested!)
multirec-merge-v1.patch.bz2 (88.8 KB) - added by danielk 12 years ago.
Initial merge patch (I still need to review the individual changes.)

Download all attachments as: .zip

Change History (135)

comment:1 Changed 13 years ago by danielk

(In [13297]) Refs #3326. Adds basic input groups support to scheduler.

MoveHigherRecords? is disabled, I will fix this later. There is at the moment no way to delete an input group after you create it. This allows you to associate up to two input groups per input connection, this enough to allow you to handle the case where a framegrabber is attached to a cable input both via a direct connection and through an STB and that same STB is connected to a firewire recorder. More groups would give more power, but unless I see a use case for it I think two groups per input is enough. When two recorders each have an input in the same input group but the programs we want to record are on the same multiplex it is assumed that this is not a conflict (how this is handled may change as this code evolves.)

comment:2 Changed 12 years ago by danielk

(In [13342]) Refs #3326. Fixes a bug in input group UI where new inputs would be assigned a random input group rather than the Generic (normal behaviour) input group.

comment:3 Changed 12 years ago by danielk

(In [13346]) Refs #3326. This creates some functions for reduntant inputgroups code segments and also adds a delete of unused input groups to keep this list from growing out of control.

comment:4 Changed 12 years ago by danielk

(In [13347]) Refs #3326. Refactor. This moves the LiveTV and Playing portions of TV::BuildOSDTreeMenu() into TV::FillMenuLiveTV() and TV::FillMenuPlaying?(), resp. Changes to these will be in a seperate commit.

Changed 12 years ago by danielk

Attachment: 3326-isbusy-v1.patch added

Adds TVRec::GetBusyInput?() and an input switching menu as a use case

comment:5 Changed 12 years ago by danielk

The isbusy-v1 patch is not by any means a final implementation. I'm pretty sure TVRec::GetFreeInputs?() can be handled more efficiently by the master backend without requiring the extra backend command GET_FREE_INPUTS.

The code is aware of input groups and the exception for inputs that share a digital tuner. However there are as of yet no multiplex restrictions. I will probably add that as additional info to GetBusyInput?(). Also, all the added functions in TVRec are returning QStringList's, they will return proper structs/classes later (which will have to & from string list functions, like ProgramInfo? does).

As proof of concept I added the "Switch Input" and "Switch Source" input switching submenus to the LiveTV menu. As of yet, the "Y"/"C" keys are still not input group aware, and there is no "Switch Source" key. "Switch Input" presents a list of all the available card + input options available, while "Switch Source" presents only one input option per video source, and lists these by the video source name. "Switch Input" is what developers generally want when testing while "Switch Source" is what users generally want in input switching.

comment:6 Changed 12 years ago by danielk

(In [13353]) Refs #3326. Applies updated version of isbusy patch.

This adds LiveTV menu input switching and makes them input group aware.

comment:7 Changed 12 years ago by danielk

(In [13354]) Refs #3326. Removes ChannelBase::SetChannelByDirection?(). This was only used in two places in dbox2channel.cpp and was easilly replaced there. I'm simplifying prior to making channel input group aware.

comment:8 Changed 12 years ago by danielk

(In [13383]) Refs #3326. Adds mplexid restriction to channel classes (lightly tested).

There are still known problems.

  • LiveTV is still not smart enough to avoid tuning to untunable channels.
  • At startup TVRec may try to tune to an untunable channel on an mplex locked DTV tuner.

comment:9 Changed 12 years ago by danielk

(In [13389]) Refs #3326. Fix for SourceUtil::HasDigitalChannel?(), it had a bad query but was never being called anyway due to another bug to be fixed in a later commit.

comment:10 Changed 12 years ago by danielk

(In [13390]) Refs #3326. Fixes a couple bugs in [13383].

  • cardid was being used in ChannelBase? to get the cardid, but this is only set during scanning, changed to GetCardID()
  • In a couple places in ChannelBase? we set the tuned chanid to the cardid when checking for multiplex conflicts.
  • We called QUERY_REMOTEENCODER for local recorders, this caused problems during startup.
    • I needed to change the TVRec initialization order a little bit to fix this. We now allocate all TVRec's before calling Init on any of them.

comment:11 Changed 12 years ago by danielk

(In [13391]) Refs #3326. Adds input group awareness to LiveTV startup.

LiveTV will now start on a valid channel and not let you tune to an invalid one via channel browse up/down keys.

You can still try to change to an unavailable channel via numeric entry, and the 'Y' and 'C' keys can still get you to a busy input. These should be blocked from doing anything terrible to the backend but the user experience is sub-optimal.

comment:12 Changed 12 years ago by danielk

(In [13396]) Refs #3326. Makes input switching via the keyboard safe.

comment:13 Changed 12 years ago by danielk

(In [13402]) Refs #3326. Fixes a copy-n-paste bug in CardUtil::GetGroupCardIDs() with patch from Shane (gnome42 at gmail)

comment:14 Changed 12 years ago by danielk

(In [13403]) Refs #3326. Adds mplexid to InputInfo?. Will be used in a future changeset to inform frontend of currently tunable channels for program guide tuning and direct channel entry.

comment:15 Changed 12 years ago by danielk

(In [13404]) Refs #3326. The non-scheduler.{cpp,h} portions of Shane's 'find alternate card' code.

The patch as a whole allows the the scheduler to avoid ending your LiveTV session 90% of the time if another card is available with the same channel and an equal input priority. But the enabling portion is not quite ready for the branch.

comment:16 Changed 12 years ago by danielk

(In [13405]) Refs #3326. Puts X next to currently untunable channels in EPG when brought up during LiveTV.

This uses the chanid to determine if the channel is tunable, so if a channel is available via multiple sources this will be inaccurate, this will be fixed in a future changeset.

comment:17 Changed 12 years ago by danielk

(In [13407]) Refs #3326. Reworks how GuideGrid? handles duplicates so that we can properly mark channels that are currently untunable in the LiveTV EPG, and so that we can change to a station regardless of which chanid came up first for that station in the DB query.

We keep track of the duplicates in GuideGrid? so if the channel is in use by all recorders using source X, but is available on source Y (under a different chanid) we can still tune to it. The callsign is used first for matching, but if you have two different stations with the same channum and no callsign these will also be considered equivalent.

We use this same map of duplicates when checking whether a channel is tunable and placing an X next to the untunable channels.

comment:18 Changed 12 years ago by danielk

(In [13436]) Refs #3326. Re-enables MoveHigherRecords? in scheduler.

This is not terribly efficient, but MoveHigherRecords? appears to be working with these changes.

comment:19 Changed 12 years ago by danielk

(In [13440]) Refs #3326. Fixes channel equivalency based on discussion on dev mailing list.

Instead of assuming that channels with the same callsign have the same programming we do two things.

  • If the channum and the callsign are the same and one channel is busy and not another we replace the busy one with the non-busy one in the guide, including showing the guide data for the new channel instead of the old.
  • If the callsign is the same but the channum is different for the busy we only mark the channel as not busy if the alternate non-busy channel has exactly the same programming in the times shown in the EPG. (We don't use just the current program because in LiveTV we may be changing to a channel because of the upcomming programming, i.e. we are tuning in now because the Baseball game starts in 5 minutes; we don't want to tune to a blacked out station just because they have the same programming on right now.)

We also apply these programming equivalency rules to channels returned by GetSelection?() (which is used to instruct TVRec on requested channel changes).

Changed 12 years ago by danielk

Extends pending recording group with some input group smarts

comment:20 Changed 12 years ago by danielk

3326-pendingrecording-v1.patch is a bit rough code cleanliness wise and is missing a few critical features. What it does is check if a recorder with a pending recording is in any input groups and if so sends tells those recorders that there is a pending recording. It then stops all those recorders unless one of them canceled the pending recording.

This does not yet make sure that the conflict is real. The input we are recording on might not conflict with the scheduled recording or we might be dealing with two DVB recorders referencing the same tuner, in which case only the mplexid must agree. In these cases your choices are still only to either exit livetv or cancel the scheduled recording.

The code in this patch doesn't yet clean up after itself, the kAskAllowRecording state and the pendingRecording info may mess up future pendingRecordings. Also, if multiple pending recordings conflict with a LiveTV session we only keep track of the latest reported conflict.

comment:21 Changed 12 years ago by danielk

(In [13448]) Refs #3326. Applies v3 of the pending recording patch.

This tells recorders that share an input group with a scheduled recording about a conflicting scheduled recording.

I haven't tested this with remote backends yet and CardUtil::IsTunerShared?() assumes that DTV recorders with shared tuners will have the same videodevice, which may not be the case when Janne finishes this portion of #3326.

This does check for shared tuners unlike v1 of the patch I posted last week. But it still doesn't cope with multiple conflicts per recorder, and it still doesn't lock the mplexid or notify the user when a pending recording is about to steal our recorder.

comment:22 Changed 12 years ago by jpatherton@…

Could you give a brief overview of how to configure the inputs/input groups using a single dvb card to do multirec?

Thanks

comment:23 Changed 12 years ago by danielk

(In [13556]) Refs #3326. Merges -r13296:13555 from SVN head to mythtv-multirec.

comment:24 Changed 12 years ago by danielk

(In [13578]) Refs #3326. Starts adding multiple stream reading for DVB device.

This adds a facility for DVBChannel to access the DVB frontend device safely with multiple DVBChannel instances sharing the same hardware. This also adds a DVBStreamHandler class for reading TS streams from the DVB DVR device for the dvbsignalmonitor and dvbrecorder classes. So far only dvbsignalmonitor has been changed to use this new class.

comment:25 Changed 12 years ago by danielk

(In [13590]) Refs #3326. Ports DVBRecorder to new DVBStreamHandler class.

comment:26 Changed 12 years ago by danielk

(In [13591]) Refs #3326. Some bugfixes & debugging changes.

Some minor bugfixes that allow the DVBRecorder to record multiple streams using the DVBStreamHandler Adds cardid to a few of the debugging outputs for the DVB recorder & channel classes to make things easier to debug.

FYI This is very rough at the moment, you can define two DVB recorders using the same device and each will record to a different file but efficiency is low and error checking is minimal.

comment:27 Changed 12 years ago by danielk

(In [13602]) Refs #3326. Efficiency improvements.

This moves some of the demuxing from DVBRecorder to MPEGStreamData for greater efficiency. Plus other small efficiency gains.

comment:28 Changed 12 years ago by danielk

(In [13606]) Refs #3326. Removes some of the redundancy in DVBRecorder by using more of the features of MPEGStreamData and also enhances MPEGStreamData with the additional features in the DVB recorder's versions of MPEGStreamData's methods.

comment:29 Changed 12 years ago by danielk

(In [13607]) Refs #3326. Moves pid priority handling to mpegstreamdata.

The algorithm for cycling pids is still broken, but at least we always have good data now.

comment:30 Changed 12 years ago by danielk

(In [13616]) Refs #3326. Cleanup of PAT & PMT handling.

The PAT handler was writing out both the PAT & PMT, now the PMT handler handles the PMT. The stream_id was being set based on the input PMT, now it is correctly set based on the output PMT. Sometimes the stream_id is set to private and we need to determine the stream type based on the descriptors, these determined stream id's are present in the output PMT and not the input PMT.

comment:31 Changed 12 years ago by danielk

(In [13618]) Refs #3326. Applies Shane's SchedPreserveLiveTV patch.

This tries to avoid scheduled recording conflicts with LiveTV by shunting a scheduled recording to another equivalent recorder. With this patch the dialog in LiveTV when a scheduled recording wants your recorder will also tell you when a scheduled recording can be recorded later instead and will optionally skip the notification and just record something later when that option is available.

comment:32 Changed 12 years ago by SimonF

This may not be the place to ask, But will the new DVBRecorder have the ability just to record the primary video and audio pids there used to be an option in the old DVB input device to "Use Harware Mpeg Decoder" which allowed you to only include primary video and audio. ??

comment:33 Changed 12 years ago by Janne Grunau

(In [13642]) Refs #3326. Fix channel scanning for DVB setups without rotor

comment:34 Changed 12 years ago by Janne Grunau

(In [13643]) Refs #3326. resets streamHandlerStarted after removing DVBSignalmonitor as listener. fixes scanning of more than 1 transport

comment:35 Changed 12 years ago by danielk

(In [13741]) Refs #3326. Fixes a bug in ChannelBase::Init() which prevented MythTV from finding an alternate startchannum if the first one failed iff the first alternate found had non-numeric characters. Also downgrades the VERBOSE() from an error to a warning if an alternate channel is found.

comment:36 Changed 12 years ago by danielk

(In [13744]) Refs #3326. Removes some old special case code from TVRec which breaks DVBRecorder now. Starts implementing pause properly for the DVBRecorder, but this is currently disabled due to insufficient thread safety in DVBStreamHandler.

comment:37 Changed 12 years ago by danielk

(In [13745]) Refs #3326. Change "On same multiplex" to "On known multiplex" since we sometimes get the table info earlier now.

comment:38 Changed 12 years ago by danielk

(In [13746]) Refs #3326. Re-enable some locking in dvbstreamhandler and initialize the retuning monitor for rotor setups.

comment:39 Changed 12 years ago by danielk

(In [13749]) Refs #3326. Enables pausing in DVBRecorder & improves debugging output from RecorderBase?

comment:40 Changed 12 years ago by danielk

(In [13750]) Refs #3326. Fixes signal monitoring for DVB Recorder in multirec branch.

The main problem was that the flag parameter to the ctor was a "uint" but the flags are "uint64_t", so on 32-bit platforms the flags are cut off. This changeset fixes this for all the signal monitors. A side problem is that we verify the flags correctly now in DVBSignalMonitor, so we encountered the ctor param problem, and we also didn't have any useful stats enabled for the default ctor.

All of this meant that the "F7" signal monitoring wasn't showing the signal strength, SNR, etc. It just showed whether we had a lock or not.

comment:41 Changed 12 years ago by danielk

(In [13800]) Refs #3326. Add basic null pointer checks to new HandleSingleProgram? methods in DVBRecorder.

comment:42 Changed 12 years ago by danielk

(In [13801]) Refs #3326. Adds mythtv-setup support for multiple recordings per transport.

Now you just need to set the 'Max recordings' >1 in the 'Recorder Options' in the DVB card config to be able to make multiple recordings per transport.

comment:43 Changed 12 years ago by danielk

(In [13820]) Refs #3326. Some cleanups in mythtv-setup code, DVB-S multirec should work now.

Changed 12 years ago by danielk

Attachment: 3326-dvb-radio-v1.patch added

Proof of concept patch for fixing DVB Radio in multirec branch

comment:44 Changed 12 years ago by danielk

(In [13824]) Refs #3326. Brings back DVB Radio to multirec branch.

This changeset implements DVB radio without the dummy video generator.

There are still some problems, in particular we don't generate a keyframe map, because there are no video keyframes to map. This means skipping falls back to ffmpeg skipping which has some problems.

comment:45 Changed 12 years ago by danielk

(In [13831]) Refs #3326. Remove stray debugging statement that crept in in [13750].

comment:46 Changed 12 years ago by danielk

(In [13832]) Refs #3326. Allow for video rendered OSD when 'viewing' an audio only file from 'Watch Recordings'

comment:47 Changed 12 years ago by danielk

(In [13833]) Refs #3326. Tunes audio buffering for 'DVB Radio' streams.

This avoids some audio buffer overflows I was seeing by basing the buffer fill on the MythTV audio prebuffering rather than the sound card's buffer, and by adjusting the thresholds a bit.

comment:48 Changed 12 years ago by danielk

(In [13837]) Refs #3326. Generates a grey image for recordings which have no video component. This allows us to generate some preview for audio only recordings, AKA 'DVB Radio'.

comment:49 Changed 12 years ago by danielk

(In [13841]) Refs #3326. Patch from Shane, aka gnome42 at gmail, which makes MythTV attempt to avoid scheduled recording conflicts with LiveTV.

The multirec branch increases these types of conflicts and this attempts to move scheduled recordings to another recorder which is not recording anything in the scheduled recording's timeslot. This introduces a LiveTV input priority which modifies how important it is to preserve a LiveTV recording.

There are still other problems with LiveTV wrt to input groups which I will be looking at next week and several other problems wrt to LiveTV which Shane has sent me patches for but I haven't looked at yet. In short, i.e. LiveTV still has plenty of known problems, try it at your own risk.

comment:50 Changed 12 years ago by danielk

(In [13846]) Refs #3326. Applies Shane's channelbase loop patch.

This avoids an infinite loop in ChannelBase::Init(). Before we would 'continue;' whenever an input wasn't available, but not increment the iterator and so we would continue to check that same input forever.

comment:51 Changed 12 years ago by danielk

(In [13847]) Refs #3326. Applies Shane's GetFreeInputs? patch.

This allows you to set up a firewire recorder on one backend and an analog recorder on another backend, which share the same STB, with input groups resolving the conflicts. This is mostly for easier debugging and correctness, input groups should be able to span more than one backend.

comment:52 Changed 12 years ago by Janne Grunau

(In [13848]) Refs #3326. Merges -r13555:13845 from trunk/mythtv to branches/mythtv-multirec

comment:53 Changed 12 years ago by Janne Grunau

(In [13865]) Refs #3326. Start EIT scanning only on the master DVBChannel.

EIT scanning should work now with multiple recorders per DVB card.

  • Removes the eit scan start time randomization in HandleStateChange?
  • Adds CardID*15 seconds to eit scan idle time after startup in RunTV to avoid starting all eit scans at the same time
  • Initializes EITScanner only if we will use it to save mamory and threads

comment:54 Changed 12 years ago by danielk

(In [13912]) Refs #3326. Avoids SEGFAULT when monitoring the signal.

We set the Recorder's RingBuffer? to NULL when monitoring signal strength because we don't want to write to disk during this time, these changes make sure that we don't segfault (this NULL pointer check was done elsewhere before multirec.)

comment:55 Changed 12 years ago by danielk

(In [13913]) Refs #3326. Adds some debugging output on a couple errors we check for in DVBChannel.

comment:56 Changed 12 years ago by danielk

(In [13914]) Refs #3326. Fixes some problems with 'AskAllowRecording?' code.

The old code could not handle more than one recorder needing you to exit live tv or take another action with respect to live tv, but with input groups multiple recorders may need you to take an action in a single LiveTV session.

I have not yet looked at all the pseudoLiveTVRecording issues, but from black-box testing it appears we can enter and leave this mode.

comment:57 Changed 12 years ago by danielk

(In [13917]) Refs #3326. Keybinding changes for Switch Source functionality added in [13353].

  • "Y" is now mapped to "NEXTSOURCE" see comment about isbusy-v1 patch in #3326 (3 months ago).
  • "Ctrl-Y" is now mapped to "PREVSOURCE"
  • "C" is mapped to "NEXTINPUT" which replaces "TOGGLEINPUTS"
  • "NEXTCARD" replaces "SWITCHCARDS", but is not mapped to by any key.
  • "TOGGLEINPUTS" and "SWITCHCARDS" are unmapped to avoid keybinding conflicts.

comment:58 Changed 12 years ago by Janne Grunau

(In [13939]) Refs #3326. Fix cloning of DVB cards for multiple backend setups

comment:59 Changed 12 years ago by danielk

(In [13941]) Refs #3326. Fixes cloning for DVB cards for multiple backend setups, slightly cleaner than [13939].

comment:60 Changed 12 years ago by Janne Grunau

(In [13966]) Refs #3326. Reverts [13404] since it isn't needed anymore.

Removes the only usage of GetRecPriority?() from a VERBOSE macro. Patch from Shane Shrybman

comment:61 Changed 12 years ago by danielk

(In [13973]) Refs #3326. Some tweaks to the "AskAllowRecording?" code.

This restores the behaviour of assuming you want to give preference to a LiveTV program you have marked as a keeper ('R') just seconds before the ask allow recording dialog is popped up (i.e. when MythTV hasn't had a chance to reschedule programs yet). We still ask in this case, but assume that you want to keep the program you just marked if you don't respond to the dialog. This is the 'I marked this to record the ending, and then ran to the bathroom' case.

comment:62 Changed 12 years ago by danielk

(In [14083]) Refs #3326. Merges r13845:14082 from trunk to mythtv-multirec.

comment:63 Changed 12 years ago by danielk

(In [14084]) Refs #3326. Updates themes/default-wide/weather-ui.xml to trunk version (had problems with merge).

comment:64 Changed 12 years ago by danielk

(In [14086]) Refs #3326. Copies input group creation from multirec branch to trunk to avoid headaches.

Do to the number of people testing the multirec branch I'm putting the inputgroup creation DB update into the trunk. If you go back and forth between multirec and trunk you still need to delete your cards when transitioning from the multirec branch, but you don't need to keep an eagle eye on dbcheck anymore to manually apply all your DB updates (though you should make sure you are upto date now, and have updates 1188 through 1192 from the trunk).

The multirec branch is not slated for merging before the next release, but the inputgroup table itself has been stable for about three months and is very unlikely to change between now and the eventual merge.

comment:65 Changed 12 years ago by danielk

(In [14087]) Refs #3326. Reverting osx-packager.pl change in [14086], this was in there from some mythtv-vid testing I'm doing, sorry.

comment:66 Changed 12 years ago by danielk

(In [14091]) Refs #3326. Cleanup of live tv priority code, no functional changes.

From Shane: This patch makes two minor changes but no functionality changes:

  • Implement David's suggestion to cache LiveTVInputPriority instead of relying on the settings cache.
  • Rename config setting LiveTVInputPriority => LiveTVPriority.

comment:67 Changed 12 years ago by danielk

(In [14111]) Refs #3326. Allows CancelNextRecording? to be sent to remote recorders.

This was written by Shane and tested by Janne. This changes the myth protocol but does not increment the myth protocol number, please recompile all your backend and frontends if you upgrade any of them to this revision of the branch.

comment:68 Changed 12 years ago by herbert

i use the multirec branch since a month now! i have still some problems in crashes of the backend, but the biggest problem is that i'm not able to look live tv. i can record every chanel, and it works fine, but when i go into live tv, the LMS in the status shows as "L_s" and it doesn't work. even when i switch inputs nothing happens.

comment:69 Changed 12 years ago by jochen

So here is a part of my logfile, when mythtv crashes

2007-08-12 08:50:53.781 DVBRec(1:3): Wrote PMT @1482798300 + 706880 2007-08-12 08:50:53.788 DVBRec(1:3): Wrote PAT @1482808076 + 1060320 2007-08-12 08:50:53.877 DVBRec(1:3): Wrote PMT @1482865980 + 530160 2007-08-12 08:50:53.896 DVBRec(1:3): Wrote PAT @1482875756 + 1696512 2007-08-12 08:50:53.967 DVBRec(1:3): Wrote PMT @1482958852 + 671536 2007-08-12 08:50:53.987 DVBRec(1:3): Wrote PAT @1482978028 + 636192 2007-08-12 08:50:54.081 DVBRec(1:3): Wrote PMT @1483045708 + 671536 2007-08-12 08:50:54.082 DVBRec(1:3): Wrote PAT @1483055484 + 812912 2007-08-12 08:50:54.168 DVBRec(1:3): Wrote PMT @1483094588 + 282752 2007-08-12 08:50:54.235 DVBRec(1:3): Wrote PAT @1483094588 + 812912 2007-08-12 08:50:54.306 DVBRec(1:3): Wrote PMT @1483114892 + 35344 2007-08-12 08:50:54.307 DVBRec(1:3): Wrote PAT @1483114892 + 600848 2007-08-12 08:50:54.375 DVBRec(1:3): Wrote PMT @1483124856 + 1237040 2007-08-12 08:50:54.376 DVBRec(1:3): Wrote PAT @1483134632 + 0 2007-08-12 08:50:54.521 DVBRec(1:3): Wrote PMT @1483145160 + 494816 2007-08-12 08:50:54.522 DVBRec(1:3): Wrote PAT @1483145160 + 1095664 2007-08-12 08:50:54.570 DTVSM(5)::SetNIT(): net_id = 53 2007-08-12 08:50:54.572 SM(5)::AddFlags?: Seen(NIT,) Match() Wait() 2007-08-12 08:50:54.593 DVBRec(1:3): Wrote PMT @1483155312 + 1731856 2007-08-12 08:50:54.594 DVBRec(1:3): Wrote PAT @1483165276 + 424128 2007-08-12 08:50:54.675 DVBRec(1:3): Wrote PMT @1483196108 + 565504 2007-08-12 08:50:54.676 DVBRec(1:3): Wrote PAT @1483205884 + 671536 2007-08-12 08:50:54.774 DVBRec(1:3): Wrote PMT @1483273188 + 1767200 2007-08-12 08:50:54.775 DVBRec(1:3): Wrote PAT @1483292740 + 883600 2007-08-12 08:50:54.870 DVBRec(1:3): Wrote PMT @1483360232 + 1449104 2007-08-12 08:50:54.872 DVBRec(1:3): Wrote PAT @1483379596 + 848256 2007-08-12 08:50:54.955 DVBRec(1:3): Wrote PMT @1483437500 + 1519792 2007-08-12 08:50:54.993 DVBRec(1:3): Wrote PAT @1483456864 + 530160 2007-08-12 08:50:55.069 DVBRec(1:3): Wrote PMT @1483495592 + 1378416 2007-08-12 08:50:55.142 DVBRec(1:3): Wrote PAT @1483505180 + 1024976 2007-08-12 08:50:55.186 SM(5)::AddFlags?: Seen(SDT,) Match() Wait() 2007-08-12 08:50:55.204 DVBRec(1:3): Wrote PMT @1483514956 + 1661168 2007-08-12 08:50:55.206 DVBRec(1:3): Wrote PAT @1483524920 + 388784 2007-08-12 08:50:55.262 DVBRec(1:3): Wrote PMT @1483544096 + 636192 2007-08-12 08:50:55.317 DVBRec(1:3): Wrote PAT @1483544096 + 1237040 2007-08-12 08:50:55.374 DVBRec(1:3): Wrote PMT @1483574364 + 35344 2007-08-12 08:50:55.375 DVBRec(1:3): Wrote PAT @1483574364 + 600848 2007-08-12 08:50:55.522 DVBRec(1:3): Wrote PMT @1483584328 + 1201696 2007-08-12 08:50:55.524 DVBRec(1:3): Wrote PAT @1483593916 + 0 2007-08-12 08:50:55.580 DVBRec(1:3): Wrote PMT @1483604632 + 671536 2007-08-12 08:50:55.582 DVBRec(1:3): Wrote PAT @1483604632 + 1519792 2007-08-12 08:50:55.675 DVBRec(1:3): Wrote PMT @1483633396 + 812912 2007-08-12 08:50:55.676 DVBRec(1:3): Wrote PAT @1483642984 + 636192 2007-08-12 08:50:55.765 DVBRec(1:3): Wrote PMT @1483671936 + 1590480 2007-08-12 08:50:55.796 DVBRec(1:3): Wrote PAT @1483681524 + 1201696 2007-08-12 08:50:55.865 DVBRec(1:3): Wrote PMT @1483730028 + 1024976 2007-08-12 08:50:55.897 DVBRec(1:3): Wrote PAT @1483739616 + 1307728 2007-08-12 08:50:55.956 DVBRec(1:3): Wrote PMT @1483797896 + 1237040 2007-08-12 08:50:55.975 DVBRec(1:3): Wrote PAT @1483817072 + 1060320 2007-08-12 08:50:56.057 DVBRec(1:3): Wrote PMT @1483865764 + 1060320 2007-08-12 08:50:56.124 DVBRec(1:3): Wrote PAT @1483875352 + 777568 2007-08-12 08:50:56.163 DVBRec(1:3): Wrote PMT @1483894904 + 954288 2007-08-12 08:50:56.195 DVBRec(1:3): Wrote PAT @1483904492 + 1237040 2007-08-12 08:50:56.258 DVBRec(1:3): Wrote PMT @1483950552 + 1555136 2007-08-12 08:50:56.284 DVBRec(1:3): Wrote PAT @1483969728 + 671536 2007-08-12 08:50:56.359 DVBRec(1:3): Wrote PMT @1484018044 + 1131008 2007-08-12 08:50:56.421 DVBRec(1:3): Wrote PAT @1484027632 + 636192 2007-08-12 08:50:56.489 DVBRec(1:3): Wrote PMT @1484037408 + 1731856 2007-08-12 08:50:56.490 DVBRec(1:3): Wrote PAT @1484047372 + 459472 2007-08-12 08:50:56.564 DVBRec(1:3): Wrote PMT @1484057148 + 1166352 2007-08-12 08:50:56.564 DVBRec(1:3): Wrote PAT @1484057148 + 1767200 2007-08-12 08:50:56.700 SM(5)::AddFlags?: Seen(SDT,) Match() Wait() 2007-08-12 08:50:56.702 DVBRec(1:3): Wrote PMT @1484077076 + 530160 2007-08-12 08:50:56.715 DVBRec(1:3): Wrote PAT @1484077076 + 1131008 2007-08-12 08:50:56.761 DVBRec(1:3): Wrote PMT @1484096816 + 424128 2007-08-12 08:50:56.762 DVBRec(1:3): Wrote PAT @1484096816 + 1484448 2007-08-12 08:50:56.859 DVBRec(1:3): Wrote PMT @1484116744 + 848256 2007-08-12 08:50:56.897 DVBRec(1:3): Wrote PAT @1484126332 + 742224 2007-08-12 08:50:56.973 DVBRec(1:3): Wrote PMT @1484167692 + 1095664 2007-08-12 08:50:56.974 DVBRec(1:3): Wrote PAT @1484177280 + 1166352 2007-08-12 08:50:57.069 DVBRec(1:3): Wrote PMT @1484225596 + 1237040 2007-08-12 08:50:57.070 DVBRec(1:3): Wrote PAT @1484235184 + 1555136 2007-08-12 08:50:57.162 DVBRec(1:3): Wrote PMT @1484293276 + 1696512 2007-08-12 08:50:57.188 DVBRec(1:3): Wrote PAT @1484312640 + 530160 2007-08-12 08:50:57.270 DVBRec(1:3): Wrote PMT @1484373552 + 1237040 2007-08-12 08:50:57.271 DVBRec(1:3): Wrote PAT @1484392728 + 777568 2007-08-12 08:50:57.346 DVBRec(1:3): Wrote PMT @1484460408 + 565504 2007-08-12 08:50:57.378 DVBRec(1:3): Wrote PAT @1484470184 + 777568 2007-08-12 08:50:57.513 DVBRec(1:3): Wrote PMT @1484499888 + 70688 2007-08-12 08:50:57.514 DVBRec(1:3): Wrote PAT @1484499888 + 671536 2007-08-12 08:50:57.593 DVBRec(1:3): Wrote PMT @1484509852 + 1307728 2007-08-12 08:50:57.594 DVBRec(1:3): Wrote PAT @1484519816 + 0 2007-08-12 08:50:57.657 DVBRec(1:3): Wrote PMT @1484530344 + 530160 2007-08-12 08:50:57.658 DVBRec(1:3): Wrote PAT @1484530344 + 1095664 2007-08-12 08:50:57.697 SM(5)::AddFlags?: Seen(PAT,) Match() Wait() 2007-08-12 08:50:57.731 SM(5)::AddFlags?: Seen() Match(PAT,) Wait() 2007-08-12 08:50:57.732 ProcessPAT: Good PAT seen after a bad PAT 2007-08-12 08:50:57.741 CreatePATSingleProgram() 2007-08-12 08:50:57.742 PAT in input stream 2007-08-12 08:51:03.006 RingBuf?(/mnt/daten4/mythdaten/3690_20070812075500.mpg): Waited 2.0 seconds for data to become available... [mpeg2video @ 0xb73b1208]ac-tex damaged at 21 24 [mpeg2video @ 0xb73b1208]Warning MVs not available terminate called after throwing an instance of 'std::bad_alloc'

what(): std::bad_alloc

0: start_time: -9223372036854.775 duration: -9223372036854.775 1: start_time: -9223372036854.775 duration: -9223372036854.775 2: start_time: -9223372036854.775 duration: -9223372036854.775 3: start_time: -9223372036854.775 duration: -9223372036854.775 stream: start_time: -9223372036854.775 duration: -9223372036854.775 bitrate=15768 kb/s 0: start_time: 2011.431 duration: 299.462 1: start_time: 2011.385 duration: 299.480 2: start_time: 2011.389 duration: 299.480 3: start_time: 2011.376 duration: 299.491 stream: start_time: 22348.621 duration: 3327.970 bitrate=3568 kb/s

comment:70 in reply to:  69 Changed 12 years ago by anonymous

This is not a support forum guys, head on over to the mailing list.

http://mythtv.org/modules.php?name=MythInfo

comment:71 Changed 12 years ago by Janne Grunau

(In [14264]) Refs #3326. Do not run MarkOtherShowings?() on the dummy livetv progs.

Among other things this bug can cause scheduled programs to be incorrectly marked as later or earlier showings when LiveTV happens to be on the same channel as the scheduled program during SchedPreserveLiveTV() run.

patch by Shane Shrybman < gnome42 (at) gmail (dot) com >

comment:72 Changed 12 years ago by Janne Grunau

(In [14265]) Refs #3326. Enable tuning from slave dvb channels

comment:73 Changed 12 years ago by danielk

(In [14287]) Refs #3326. Merges r14082:14286 from trunk to mythtv-multirec.

comment:74 Changed 12 years ago by danielk

(In [14288]) Refs #3326. Merges r13396:14286 from trunk to mythtv-channel-scanner.

comment:75 Changed 12 years ago by danielk

(In [14362]) Refs #2909. Refs #3326. Fixes Channel Scan popup segfault in mythtv-multirec.

The problem when we applied this to trunk in [12624] & [12629] which caused the reversion in [12635] appears to have been the addition of some popupDone() signals when we were done with a MythPopupBox?. This signal is interpreted in several places in playbackbox,cpp and once in welcomedialog.cpp to mean the popup was rejected not just done. I've added the return value to the popupDone signal so that these uses can be supported by simply checking that the return value is Rejected before interpreting the signal as a cancel.

I'm fixing this in multirec is because the changes in multirec make the lack of thread safety in the popup handling cause a reproducable segfault every time you run the same channel scan twice. In the trunk this segfault is relatively rare.

comment:76 Changed 12 years ago by danielk

(In [14363]) Refs #3326. Adds pseudo keyframes for audio only MPEG-TS recordings.

We stripped out the pseudo video stream code from DVBRecorder when implementing multirec and replaced it with basic audio only playback support in the NVP, however the NVP can't skip quickly without keyframes so this adds a keyframe every 8th frame interval at the current FPS. There is some drift in the timing reported for the video due to rounding errors, but this at least allows you to to approximately the time in the recording you want to jump to.

comment:77 Changed 12 years ago by danielk

(In [14364]) Refs #3326. Makes timing of pseudo keyframes for audio only MPEG-TS recordings more accurate.

comment:78 Changed 12 years ago by Janne Grunau

(In [14373]) Refs #3326. Always tune to the requested channel.

We don't know if different card has switched to another multiplex.

comment:79 Changed 12 years ago by Janne Grunau

(In [14385]) Refs #3326. Fix opening DVB devices only on demand

Remove non master dvbchannels from its own is_open map Reopen the DVBChannel if needed in Init()

comment:80 Changed 12 years ago by Janne Grunau

(In [14392]) Refs #3326. Fix DiSEqC rotor setups

Set 100% as rotor target clear WaitForPos? if the card has no rotor attached clear WaitForPos? after the correct SDT was seen

comment:81 Changed 12 years ago by Janne Grunau

(In [14393]) Refs #3326. fix changing DVB input from non master Tune()

DVBChannel::Tune(QString, Qstring, bool, bool) is usually called with an empty inputname string since the input is setted earlier. This breaks tuning from non-master DVBChannels. Chnages the inputname argument with inputid to avoid unnecessary inputname <-> inputid lookups.

comment:82 Changed 12 years ago by danielk

(In [14412]) Refs #3326. Merges r14286:14410 from trunk to mythtv-multirec

comment:83 Changed 12 years ago by danielk

(In [14440]) Refs #3326. Adds multirec capability to DVBCam class.

Changed 12 years ago by martin@…

Attachment: multirecmjl.patch added

Forces scheduler to check all cards, rather than settling on the first with no conflicts, and choose one with most input group overlap if possible.

comment:84 Changed 12 years ago by danielk

(In [14468]) Refs #3326. Merges -r14410:14467 from trunk to mythtv-multirec.

comment:85 Changed 12 years ago by danielk

(In [14500]) Refs #3326. Adds a simple CPU Tick timer function to util.h.

This is very useful for timing things for code optimization.

comment:86 Changed 12 years ago by danielk

That last commit [14500] accidentally committed changes to programinfo.{h,cpp}. These were going to be my next commit so I'll just comment on it here instead of reverting. This saves the series QRegExp across runs of ProgramInfo::IsSameProgram?() with a QMutex to make this safe, and uses (str.isEmpty()) instead of (str == "") to check if a string is empty. Together these optimizations bring my scheduling runs down from 72 seconds to 16 seconds.

I have some other optimizations which speed up scheduling further, but these are a little more invasive than this simple optimization of ProgramInfo::IsSameProgram?().

I'm applying these to this branch because input groups and recordings per physical card have slowed down scheduling a bit.

comment:87 Changed 12 years ago by danielk

(In [14501]) Refs #3326. Small optimization for scheduling in multirec, use deque instead of linked list for the RecList?.

The reason a doubly linked list was used is because it has O(1) performance for pop_front, pop_back, and erase, and O(n log n) performance for sort. However, this datastructure is a memory hog and has a fairly large constant in front of those (1)'s and (n log n)'s. By comparison a deque has O(1) for pop_front, pop_back and O(n log n) for sorts and has a very low memory footprint and runtime constant. erase is slow at O(n), but we don't actually need fast erase's, by deferring our erases we get the same O(n) total time for PruneOverlaps?() and PruneRedundants?() where n is the number of items in the worklist.

I still use the same stable sort (merge sort) for the deque as was used for the linked list.

In practice this is what a deque means for performance:

  • With just 30 recording rules resulting in 622 scheduled recordings there is no difference, the deque has a less than 1% advantage, which with just 5 runs for each datastructure is meaningless.
  • With 52 recording rules resulting in 1003 scheduled recording there is a 12% speedup in placement, the deque has a definte advantage.
  • With more recording rules resulting in more scheduled recordings the advantage stays a little over 10%

Because the advantage is not as pronounced as the 4+ times faster code for ProgramInfo::IsSameProgram?() in [14500], I've left both implementations in there for now, you can switch by changing USE_DEQUE_RECLIST in scheduler.h from 1 to 0. This will make it easy to test different data against this change and revert if necessary.

--This line, and those below, will be ignored--

M programs/mythbackend/scheduler.h M programs/mythbackend/scheduler.cpp M programs/mythbackend/httpstatus.cpp

comment:88 Changed 12 years ago by danielk

(In [14505]) Refs #3326. Merges r14410:14504 from trunk to mythtv-multirec

comment:89 Changed 12 years ago by danielk

(In [14509]) Refs #3326. Erase a DTVChannel from the master map in the destructor.

Changed 12 years ago by bradley.kite@…

Attachment: mytharchive.patch added

Patch to allow mytharchive to complile (installs required headers)

Changed 12 years ago by bradley.kite@…

Attachment: backend.log.gz added

Back-end failures when channel ends, MHEG starts.

comment:90 Changed 12 years ago by markus

i have a mythbackend crash with multirec.

gdb.txt attached...

Changed 12 years ago by markus

Attachment: gdb.txt added

Changed 12 years ago by danielk

Various scheduling optimizations, some good, some bad.

comment:91 Changed 12 years ago by danielk

(In [14612]) Refs #3326. Changes one of Shane's added VERBOSE macros for the scheduler from VB_IMPORTANT to VB_SCHEDULE now that it's been working well for a while.

comment:92 Changed 12 years ago by danielk

I forgot to reference this tracking ticket on the last commit...

(In [14615]) Refs #3963. Applies DTVRecorder reset patch to multirec.

The problem is that the DVB recorder and some other DTVRecorder based recorders lose the positionmap on LiveTV transitions. This fixed the problem in the multirec branch. (Fixing this properly in trunk would be more complicated so we haven't attempted that, hopefully the multirec branch will be ready for merging to trunk soon.)

comment:93 Changed 12 years ago by danielk

(In [14616]) Refs #3926. Implements caching of ProgramInfo::IsSameProgram??() for scheduler.

This provides about a 10% speedup in exhange for a few kilobytes more RAM usage during scheduling. I also tested caching IsSameProgramTimeslot??() but it did not provide for a measurable speedup in scheduling.

Changed 12 years ago by danielk

Adds a range map for finding conflicts, 3% speedup

comment:94 Changed 12 years ago by danielk

I've attached a patch for the range map optimization for scheduling in 3326-multimap-sched-v1.patch. I only yields a 3% speedup after applying the previous optimizations to speed up IsSameProgram? checking. It used to yield a 20% speedup. I don't think 3% is worth it so I'm not applying this.

multi-sched-multimap-v4.patch also contains an optimization for Scheduler::MoveHigherRecords?(), but it is very unstable with respect to the data as to whether it speeds things up or slows them down. MoveHigherRecords?() is what consumes most of the scheduling time whenever you schedule a frequent generic program for recording, for example "Eyewitness News Now", and you have recording priorities set so that the scheduler tries other showings for these programs. I think a different approach is needed to optimize this routine.

We're no longer slower than the scheduler in trunk, we're about 27% faster than the scheduler in trunk on average with the same recorder setup now, so I'm calling it a day on the scheduler optimizations.

comment:95 Changed 12 years ago by danielk

(In [14617]) Refs #3326. Removes excessive scheduler debugging for Shane's new scheduler code with patch from Shane.

Changed 12 years ago by danielk

Attachment: multirecmjl-v2.patch added

Cleaned up version of martin's patch, I don't like this approach so it's unlikely that we'll use it but I cleaned it up when reviewing it...

comment:96 Changed 12 years ago by danielk

(In [14749]) Refs #3326. Removes child card support for supporting hybrid DVB cards in favor of using input groups for this functionality.

comment:97 Changed 12 years ago by jochen

ref to ticket 4123.

now i have started to record two programs: 1.) "my big fat greek wedding" and 2.) "Spiegel TV".

After the first start, it recorded 2. and 1. was 0 byte. after killing mbe and restart it, it recorded 1. and 2. was 0 byte!

the 2. mbe logs (record,channel,siparser) were attached!

mbe.log, mbe2.log

Changed 12 years ago by jochen

Attachment: mbe.log added

mbe.log

Changed 12 years ago by jochen

Attachment: mbe2.log added

mbe2.log

comment:98 Changed 12 years ago by danielk

(In [14905] by janne) Refs #3326. Merges r14763:14902 from trunk to mythtv-multirec

comment:99 Changed 12 years ago by danielk

(In [14911]) Refs #3326. Merges r14902:14910 from svn trunk to mythtv-multirec.

comment:100 Changed 12 years ago by Janne Grunau

(In [14926]) Refs #3326. Merges r14910:14925 from trunk to mythtv-multirec

comment:101 Changed 12 years ago by Janne Grunau

(In [14949]) Refs #3326. Fix a segfault in mythtv-setup with hybrid cards

comment:102 Changed 12 years ago by danielk

(In [15018]) Refs #3326. Merges r14925:15017 from trunk to mythtv-multirec

Changed 12 years ago by danielk

Attachment: 3326-inputgroupbug-v1.patch added

Possible bug for a bug where recordings sharing an input group are canceled when they shouldn't (untested!)

comment:103 Changed 12 years ago by danielk

(In [15036]) Refs #3326. Fixes a phantom conflict problem with input groups.

This fixes the issue reported by Bruce Markley where an in progress recording would be ended prematurely when another recorder wanted to record on an input in the same input group as an input on the card which the in progress recording is, but the in progress recording is using a different input which is not in that input group.

The problem was that TVRec::StartRecording?() checked for conflicting cards, but did not check if the input was actually conflicting. The fix was simple, but the to avoid code duplication I moved the input group map out of the scheduler and into inputgroupmap.h. (This is the code as the patch I posted earlier, I just didn't have time to test it earlier.)

comment:104 Changed 12 years ago by danielk

(In [15042]) Refs #3326. Moves the code in TVRec which finds conflicting cards to CardUtil? so it can be used in the scheduler as well.

comment:105 Changed 12 years ago by danielk

(In [15044]) Refs #3326. Fixes handling of pre-roll with input groups.

With input groups we need to check if a recording is on the same input as any in-progress recording before applying pre-roll.

I have not incremented the protocol version, but you need to recompile all affected frontends and backends because IsBusy?() has changed.

comment:106 Changed 12 years ago by danielk

(In [15148]) Refs #3326. Merges r15017:15146 from trunk to mythtv-multirec.

comment:107 Changed 12 years ago by danielk

(In [15150]) Refs #3326. Applies patch from Shane to simplify new LiveTV avoidance configuration.

As suggested by Bruce, this replaces a priority setting with a simple checkbox. Internally the implementation still relies on giving LiveTV a low or high priority in scheduler comparisons, but this is complexity is hidden from the user.

comment:108 Changed 12 years ago by Janne Grunau

(In [15302]) Refs #3326. Merges r15296:15301 from trunk to mythtv-multirec.

comment:109 Changed 12 years ago by danielk

(In [15360]) Refs #3326. Merges r15301:15359 from trunk to multirec.

comment:110 Changed 12 years ago by Janne Grunau

(In [15363]) Refs #3326. Merges r15359:15362 from trunk to mythtv-multirec since [15361] fixes an error in [15359].

comment:111 Changed 12 years ago by danielk

Milestone: unknown0.21

comment:112 Changed 12 years ago by danielk

(In [15401]) Refs #3326. Adds some debugging to firewirechannel.cpp (mostly to help debug problem Bruce reported with input groups, but generally useful as well).

comment:113 Changed 12 years ago by Janne Grunau

(In [15419]) Refs #3326. Merges -r15362:14518 from trunk to mythtv-multirec

comment:114 Changed 12 years ago by danielk

(In [15425]) Refs #3326. Merges r15362:15424 from trunk to multirec.

comment:115 Changed 12 years ago by danielk

(In [15427]) Refs #3326. Removes some debugging code accidentally committed in [15425].

Changed 12 years ago by danielk

Attachment: multirec-merge-v1.patch.bz2 added

Initial merge patch (I still need to review the individual changes.)

comment:116 Changed 12 years ago by danielk

(In [15429]) Refs #3326. Const correctness fixes from multirec branch.

This updates the binary revision do to a change to ProgramInfo?, so rebuild the plugins after installing the update mythtv.

comment:117 Changed 12 years ago by danielk

(In [15435]) Refs #3326. Utility function additions from the multirec branch.

comment:118 Changed 12 years ago by danielk

(In [15436]) Refs #3326. Patch from Shane to fix LiveTV issue in multirec due to phantom busy input.

comment:119 Changed 12 years ago by danielk

(In [15437]) Refs #3326. Refs #3504. Fixes #4369. Syncs multirec to trunk.

This touches on many aspects of recording, for DVB Recorders in particular.

  • Adds PID priorities to the MPEGStreamHandler. This allows a DTV recorder to place a higher priority on recording audio and visual streams over other streams. This is particularly useful for DTV hardware which have a fixed number of hardware PID filters. (A similar mechanism already existed in DVBRecorder, but it didn't work in multirec, and this more general approach allows other recorders to use this.)
  • Adds input groups. This is used by the DVB Recorder to implement multiple recordings per transport. Multiple recorders are created referencing the same device, but they are placed in the same input groups so that they are forced to all record on the same transport. This can also allow two or more devices to share a single STB, and could be extended to allow multiple capture cards to share a single satellite dish on a rotor.
    • Removes analog child cards for DVB Recorders (can be simulated with input groups) Note: you will need to manually add both cards to the same named input group.
  • DVB/QAM Audio stream support
    • Adds the ability to play audio only mpeg files to the NuppelVideoRecorder?. Note: this allows all DTV recorders to support "Radio" streams.
    • Removes the dummy video from the DVBRecorder, not needed anymore
  • Adds a new input switching mode which cycles through video sources, instead of actual cards. The card switching mode keymap is now undefined by default, and the video source switching uses it's "Y" keybinding. Unbind "NEXTSOURCE" and bind "NEXTCARD" instead for the old behaviour.
  • Adds the ability to record multiple streams in a TS transport at once with DVB cards. Just delete your DVB cards in mythtv-setup and then as you recreate each one go into "Recording Options" and set "Max Recordings" to 2 or more. We recommend a reasonable number here, as you still have limited hard drive, CPU, etc.

There is still a known problem when using input groups with a non-DVB recorder:

  • The firewire recorder can fail to make recordings if its input is in an input group with another recorder's input. Please run the backend with '-v channel,record' if you have this configuration and attach the log to #3326 if this happens. I found the probable location of the problem added some debugging last week.

We're also very interested in any new problems that are encountered when this in run with different hardware. About 10 people have tested this, so it is relatively well tested, but it is a very large change to the way inputs are handled, and to the DVB Recorder in particular.

This was worked on by Janne, Shane, and myself with help from David and Bruce with scheduler suggestions and testing, and the help of many others with additonal testing.

comment:120 Changed 12 years ago by danielk

Resolution: fixed
Status: newclosed

comment:121 Changed 12 years ago by danielk

(In [15786]) Refs #3326. Applies patch from Shane to always allow recordings to move between virtual recorders sharing the same physical device.

We normally only do this if the user has configured MythTV to find an equivalent recorder for a scheduled recording because the recorders may in fact not be perfectly equivalent even if they have the same recording priority; but we know that all virtual recorders sharing the same physical device are perfectly equivalent for scheduled recordings.

Note: See TracTickets for help on using tickets.