[FFmpeg-devel] [PATCH] ADTS AAC with ID3v2

David DeHaven dave
Wed Jan 14 23:18:41 CET 2009


On Jan 14, 2009, at 10:53 AM, Michael Niedermayer wrote:

> On Wed, Jan 14, 2009 at 01:39:05PM -0500, Alex Converse wrote:
>> On Wed, Jan 14, 2009 at 12:57 PM, Michael Niedermayer <michaelni at gmx.at 
>> >wrote:
>>
>>> On Wed, Jan 14, 2009 at 10:17:33AM -0500, Alex Converse wrote:
>>>> On Wed, Jan 14, 2009 at 10:10 AM, Michael Niedermayer <michaelni at gmx.at
>>>> wrote:
>>>>
>>>>> On Wed, Jan 14, 2009 at 09:47:29AM -0500, Alex Converse wrote:
>>>>>> On Wed, Jan 14, 2009 at 9:17 AM, Michael Niedermayer <
>>> michaelni at gmx.at
>>>>>> wrote:
>>>>>>
>>>>>>> On Wed, Jan 14, 2009 at 12:23:00AM -0500, Alex Converse wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> The attached patch adds support to the ADTS AAC probe to detect
>>> AAC
>>>>> files
>>>>>>>> with ID3v2 tags at a higher level than the MP3 probe and the  
>>>>>>>> MPC
>>>>> probe.
>>>>>>> It
>>>>>>>> refactors some id3 detection from mp3.c into id3v2.c.
>>>>>>>>
>>>>>>> [...]
>>>>>>>
>>>>>>>> #define ID3v1_TAG_SIZE 128
>>>>>>>> -
>>>>>>>> #define ID3v1_GENRE_MAX 125
>>>>>>>>
>>>>>>>> static const char * const id3v1_genre_str[ID3v1_GENRE_MAX +  
>>>>>>>> 1] =
>>> {
>>>>>>>
>>>>>>> cosmetic
>>>>>>>
>>>>>>> [...]
>>>>>>>> @@ -487,7 +472,7 @@ static int mp3_read_header(AVFormatContext
>>> *s,
>>>>>>>>     ret = get_buffer(s->pb, buf, ID3v2_HEADER_SIZE);
>>>>>>>>     if (ret != ID3v2_HEADER_SIZE)
>>>>>>>>         return -1;
>>>>>>>> -    if (id3v2_match(buf)) {
>>>>>>>> +    if (ff_id3v2_match(buf)) {
>>>>>>>>         /* parse ID3v2 header */
>>>>>>>>         len = ((buf[6] & 0x7f) << 21) |
>>>>>>>>             ((buf[7] & 0x7f) << 14) |
>>>>>>>
>>>>>>> the split out of (ff_)id3v2_match is ok but should be a seperate
>>> patch
>>>>>>> and commit
>>>>>>>
>>>>>>> [...]
>>>>>>>>     }
>>>>>>>> -    if   (first_frames>=3) return AVPROBE_SCORE_MAX/2+1;
>>>>>>>> +    if   (first_frames>=3) return AVPROBE_SCORE_MAX/2+2;
>>>>>>>>     else if(max_frames>500)return AVPROBE_SCORE_MAX/2;
>>>>>>>>     else if(max_frames>=3) return AVPROBE_SCORE_MAX/4;
>>>>>>>>     else if(max_frames>=1) return 1;
>>>>>>>
>>>>>>> why?
>>>>>>
>>>>>>
>>>>>> Just having an ID3v2 tag gives a score of AVPROBE_SCORE_MAX/2+1  
>>>>>> for
>>> mp3.
>>>>>
>>>>> That sounds like a bug ...
>>>>>
>>>>
>>>> The comment about mpeg-ps in mp3.c made me think it was a hackish  
>>>> design
>>>> decision, not a bug.
>>>
>>> well one could call it that way, still the existence of hackish  
>>> code is no
>>> argument to add more hackish code like the +1 -> +2
>>>
>>
>> What would be the correct solution for MP3 then? skipping the tag  
>> and trying
>> again?
>
> i think so

I'll second that and add that it affects FLAC files I've seen in the  
wild too... I had a fix at some point that skipped the ID3 if it was  
there, I might still have it somewhere. I could update it for the  
separate id3v2 code and pass it along.

-DrD-





More information about the ffmpeg-devel mailing list