mirror of https://github.com/mpv-player/mpv
Add support for 13k Voice (Qclp) in 3g2 files
Fix vorbis detection so that it doesn't misdetect other codecs git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19369 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
51d4c32446
commit
1c4b71edd9
|
@ -807,7 +807,9 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak
|
||||||
if(atom_len > 8) {
|
if(atom_len > 8) {
|
||||||
esds_t esds;
|
esds_t esds;
|
||||||
if(!mp4_parse_esds(&trak->stdata[36+adjust], atom_len-8, &esds)) {
|
if(!mp4_parse_esds(&trak->stdata[36+adjust], atom_len-8, &esds)) {
|
||||||
if(sh->format==0x6134706D && esds.decoderConfigLen > 8)
|
/* 0xdd is a "user private" id, not an official allocated id (see http://www.mp4ra.org/object.html),
|
||||||
|
so perform some extra checks to be sure that this is really vorbis audio */
|
||||||
|
if(esds.objectTypeId==0xdd && esds.streamType==0x15 && sh->format==0x6134706D && esds.decoderConfigLen > 8)
|
||||||
{
|
{
|
||||||
//vorbis audio
|
//vorbis audio
|
||||||
unsigned char *buf[3];
|
unsigned char *buf[3];
|
||||||
|
@ -861,6 +863,12 @@ quit_vorbis_block:
|
||||||
if(esds.objectTypeId==MP4OTI_MPEG1Audio || esds.objectTypeId==MP4OTI_MPEG2AudioPart3)
|
if(esds.objectTypeId==MP4OTI_MPEG1Audio || esds.objectTypeId==MP4OTI_MPEG2AudioPart3)
|
||||||
sh->format=0x55; // .mp3
|
sh->format=0x55; // .mp3
|
||||||
|
|
||||||
|
if(esds.objectTypeId==MP4OTI_13kVoice) { // 13K Voice, defined by 3GPP2
|
||||||
|
sh->format=mmioFOURCC('Q', 'c', 'l', 'p');
|
||||||
|
trak->nchannels=sh->channels=1;
|
||||||
|
trak->samplebytes=sh->samplesize=1;
|
||||||
|
}
|
||||||
|
|
||||||
// dump away the codec specific configuration for the AAC decoder
|
// dump away the codec specific configuration for the AAC decoder
|
||||||
if(esds.decoderConfigLen){
|
if(esds.decoderConfigLen){
|
||||||
if( (esds.decoderConfig[0]>>3) == 29 )
|
if( (esds.decoderConfig[0]>>3) == 29 )
|
||||||
|
|
|
@ -59,6 +59,8 @@
|
||||||
#define MP4OTI_MPEG1Audio 0x6B
|
#define MP4OTI_MPEG1Audio 0x6B
|
||||||
/* JPEG visual stream */
|
/* JPEG visual stream */
|
||||||
#define MP4OTI_JPEG 0x6C
|
#define MP4OTI_JPEG 0x6C
|
||||||
|
/* 3GPP2 */
|
||||||
|
#define MP4OTI_13kVoice 0xE1
|
||||||
|
|
||||||
/* I define uint24 here for better understanding */
|
/* I define uint24 here for better understanding */
|
||||||
#ifndef uint24_t
|
#ifndef uint24_t
|
||||||
|
|
Loading…
Reference in New Issue