[mythtv-commits] Ticket #6626: mythtranscode selecting wrong audio track
MythTV
mythtv at cvs.mythtv.org
Fri Jun 12 12:03:10 UTC 2009
#6626: mythtranscode selecting wrong audio track
------------------------------------+---------------------------------------
Reporter: anonymous | Owner: ijr
Type: defect | Status: new
Priority: minor | Milestone: unknown
Component: MythTV - Mythtranscode | Version: head
Severity: medium | Mlocked: 0
------------------------------------+---------------------------------------
I don't know if this is by design or a fault
{{{
mythtranscode --chanid 1502 --starttime 20090612132700 -v all --profile
autodetect --fifodir
......
2009-06-12 17:48:16.498 AFD: Trying to select audio track (w/lang)
2009-06-12 17:48:16.498 AFD: Selected track 2: English AC3 2ch (A/V Stream
#2)
2009-06-12 17:48:16.498 AFD: Initializing audio parms from audio track #2
2009-06-12 17:48:16.498 AFD: Audio format changed
from id(NONE) -1Hz -1ch 0bps ; id(NONE)
-1Hz -1ch 0bps
to id( AC3) 48000Hz 2ch 16bps ; id( AC3)
48000Hz 2ch 16bps
2009-06-12 17:48:16.499 Dec: Trying to select track (w/lang)
2009-06-12 17:48:16.499 Dec: Selecting first track
2009-06-12 17:48:16.499 Dec: Selected track #1 in the Unknown language(0)
2009-06-12 17:48:16.499 Dec: Selected track #1 in the English
language(6647399)
......
}}}
So AvFormatDecoder selects the AC3 track. This is then ignored and
decoderbase selects the first audio track.
This looks to be due to avformatdecoder.cpp at some time having a new
method AutoSelectAudioTrack and AutoSelectTrack set as
{{{
// documented in decoderbase.cpp
int AvFormatDecoder::AutoSelectTrack(uint type)
{
if (kTrackTypeAudio == type)
return AutoSelectAudioTrack();
if (ringBuffer->InDVDMenuOrStillFrame())
return -1;
return DecoderBase::AutoSelectTrack(type);
}
}}}
So if AvFormatDecoder::AutoSelectTrack is used AutoSelectAudioTrack will
be used to get audio track. If DecoderBase::AutoSelectTrack is used the
first will be returned.
Is this incorrect behaviour? if so could
a) decoderbase.h be changed to call AvFormatDecoder::AutoSelectTrack (This
seems a hack to me, where else is DecoderBase::AutoSelectTrack used) e.g.
{{{
inline void DecoderBase::AutoSelectTracks(void)
{
for (uint i = 0; i < kTrackTypeCount; i++)
AvFormatDecoder->AutoSelectTrack(i);
//AutoSelectTrack(i);
}
}}}
b) move AutoSelectAudioTrack to decoderbase.cpp and change
DecoderBase::AutoSelectTrack to use it like
AvFormatDecoder::AutoSelectTrack currently does, then remove
AvFormatDecoder::AutoSelectTrack
--
Ticket URL: <http://svn.mythtv.org/trac/ticket/6626>
MythTV <http://www.mythtv.org/>
MythTV
More information about the mythtv-commits
mailing list