summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_ty.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-09-14 19:30:25 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-09-14 19:30:25 +0000
commit7d7cfea105792f3e963b8dc41a1549f96d63fc57 (patch)
tree3eaea891a2bcac2af4bba2db13b9759d26b7e89e /libmpdemux/demux_ty.c
parentcb4d79be6be2845f497688c076ae50618fbc4590 (diff)
downloadmpv-7d7cfea105792f3e963b8dc41a1549f96d63fc57.tar.bz2
mpv-7d7cfea105792f3e963b8dc41a1549f96d63fc57.tar.xz
Avoid a big piece of duplicated code
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24495 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_ty.c')
-rw-r--r--libmpdemux/demux_ty.c59
1 files changed, 7 insertions, 52 deletions
diff --git a/libmpdemux/demux_ty.c b/libmpdemux/demux_ty.c
index 590e5d12a4..2bfa7a7515 100644
--- a/libmpdemux/demux_ty.c
+++ b/libmpdemux/demux_ty.c
@@ -748,16 +748,18 @@ static int demux_ty_fill_buffer( demuxer_t *demux, demux_stream_t *dsds )
}
}
- // MPEG Audio with PES Header, either SA or DTiVo
+ // 3 - MPEG Audio with PES Header, either SA or DTiVo
+ // 9 - DTiVo AC3 Audio Data with PES Header
// ================================================
- if ( nybbleType == 0x03 )
+ if ( nybbleType == 0x03 || nybbleType == 0x09 )
{
+ if ( nybbleType == 0x03 )
demux_ty_FindESHeader( ty_MPEGAudioPacket, 4, &chunk[ offset ],
size, &esOffset1 );
// SA PES Header, No Audio Data
// ================================================
- if ( esOffset1 == 0 && size == 16 )
+ if ( nybbleType == 0x03 && esOffset1 == 0 && size == 16 )
{
tivo->tivoType = 1;
tivo->lastAudioPTS = get_ty_pts( &chunk[ offset +
@@ -770,7 +772,7 @@ static int demux_ty_fill_buffer( demuxer_t *demux, demux_stream_t *dsds )
tivo->tivoType = 2;
demux_ty_AddToAudioBuffer( tivo, &chunk[ offset ], size );
- demux_ty_FindESPacket( ty_MPEGAudioPacket, 4,
+ demux_ty_FindESPacket( nybbleType == 9 ? ty_AC3AudioPacket : ty_MPEGAudioPacket, 4,
tivo->lastAudio, tivo->lastAudioEnd, &esOffset1,
&esOffset2 );
@@ -790,6 +792,7 @@ static int demux_ty_fill_buffer( demuxer_t *demux, demux_stream_t *dsds )
tivo->lastAudioPTS = get_ty_pts(
&tivo->lastAudio[ esOffset1 + ptsOffset ] );
+ if (nybbleType == 9) headerSize = 0;
demux_ty_CopyToDemuxPacket
(
TY_A,
@@ -823,54 +826,6 @@ static int demux_ty_fill_buffer( demuxer_t *demux, demux_stream_t *dsds )
tivo->lastAudioPTS );
}
- // DTiVo AC3 Audio Data with PES Header
- // ================================================
- if ( nybbleType == 0x09 )
- {
- tivo->tivoType = 2;
-
- demux_ty_AddToAudioBuffer( tivo, &chunk[ offset ], size );
- demux_ty_FindESPacket( ty_AC3AudioPacket, 4,
- tivo->lastAudio, tivo->lastAudioEnd, &esOffset1,
- &esOffset2 );
-
- if ( esOffset1 != -1 && esOffset2 != -1 )
- {
- int packetSize = esOffset2 - esOffset1;
- int headerSize;
- int ptsOffset;
-
- if ( IsValidAudioPacket( packetSize, &ptsOffset,
- &headerSize ) )
- {
- mp_msg( MSGT_DEMUX, MSGL_DBG3,
- "ty:Adding DTiVo Audio Packet Size %d\n",
- packetSize );
-
- tivo->lastAudioPTS = get_ty_pts(
- &tivo->lastAudio[ esOffset1 + ptsOffset ] );
-
- // AC3 Decoder WANTS the PTS
- demux_ty_CopyToDemuxPacket
- (
- TY_A,
- tivo,
- demux->audio,
- &tivo->lastAudio[ esOffset1 ],
- packetSize,
- demux->filepos + offset,
- tivo->lastAudioPTS
- );
-
- }
-
- // Collapse the Audio Buffer
- memmove( &tivo->lastAudio[ 0 ],
- &tivo->lastAudio[ esOffset2 ],
- tivo->lastAudioEnd - esOffset2 );
- tivo->lastAudioEnd -= esOffset2;
- }
- }
offset += size;
}
else