[FFmpeg-devel] [PATCH] HE-AAC v1 decoder try 4
Vladimir Pantelic
pan
Sun Feb 21 23:08:08 CET 2010
Michael Niedermayer wrote:
> On Sun, Feb 21, 2010 at 09:36:10PM +0100, Vladimir Pantelic wrote:
>> Michael Niedermayer wrote:
>>> On Wed, Feb 17, 2010 at 07:06:44PM +0100, Vladimir Pantelic wrote:
>>>> Vladimir Pantelic wrote:
>>>>> Alexander Strange wrote:
>>>>>> On Feb 16, 2010, at 6:19 PM, Alex Converse wrote:
>>>>>>
>>>>>>> On Tue, Feb 16, 2010 at 6:01 PM, Alex
>>>>>>> Converse<alex.converse at gmail.com>wrote:
>>>>>>>
>>>>>>>> Notes:
>>>>>>>> *All the computation time is spent in ff_sbr_apply() and it's
>>>>>>>> children. If it isn't called from ff_sbr_apply() making it 100%
>>>>>>>> faster
>>>>>>>> isn't going to buy us anything.
>>>>>>>> *Right now the synthesis filterbank is written on top on an MDCT.
>>>>>>>> With
>>>>>>>> appropriate SIMD functions it may make sense to move it to an FFT.
>>>>>>>> Right now the MDCT version is much faster.
>>>>>>>> *SIMD placeholder patch not included
>>>>>>>>
>>>>>>> Wrong patch.
>>>>>>> try 4.1 :)
>>>>>>> <sbr.diff>
>>>>>> I tried it with ffplay and it plays 2x too slow. If ffplay needs to
>>>>>> be
>>>>>> fixed, I wonder if other players will too? Well, it's unavoidable
>>>>>> anyway.
>>>>>> ffmpeg to wav sounds fine.
>>>>> guess its the issue that the container signals the smaller (non-sbr)
>>>>> sample rate, e.g. 24khz and the decoder applies SBR
>>>>> and returns 48kHz. I had to fix my player to switch to the decoder
>>>>> returned sample rate too...
>>>> ok, it is more the fact that avctx->sample_rate is 0
>>>> after we perform avcodec_open(), so SDL defaults to
>>>> 22050.
>>> i guess unconditionally setting it to 0 in avcodec_open() is not ideal
>>>
>>>
>>>> it is correct before the avcodec_open() call, but that
>>>> might not always be the case I guess.
>>>>
>>>> totally lame patch attached to detects any change in
>>>> sample_rate by the decoder and re-open SDL audio...
>>>>
>>>> (my first patch (yay), more for RFC than an attempt to
>>>> get instant fame...)
>>>> ffplay.c | 33 ++++++++++++++++++++++++++++++++-
>>>> 1 file changed, 32 insertions(+), 1 deletion(-)
>>>> 8951327565cd5e449a94c431caa46767cfc84ae2 ffplay_he_aac_sample_rate.diff
>>>> Index: ffplay.c
>>>> ===================================================================
>>>> --- ffplay.c (revision 21861)
>>>> +++ ffplay.c (working copy)
>>>> @@ -146,6 +146,8 @@
>>>> AVPacket audio_pkt_temp;
>>>> AVPacket audio_pkt;
>>>> enum SampleFormat audio_src_fmt;
>>>> + int audio_sample_rate;
>>>> + int audio_sample_rate_changed;
>>>> AVAudioConvert *reformat_ctx;
>>>>
>>>> int show_audio; /* if true, display audio samples */
>>>> @@ -1670,7 +1672,10 @@
>>>> pkt_temp->size -= len1;
>>>> if (data_size<= 0)
>>>> continue;
>>>> -
>>>> + if (dec->sample_rate != is->audio_sample_rate) {
>>>> + is->audio_sample_rate = dec->sample_rate;
>>>> + is->audio_sample_rate_changed = 1;
>>>> + }
>>>> if (dec->sample_fmt != is->audio_src_fmt) {
>>>> if (is->reformat_ctx)
>>>> av_audio_convert_free(is->reformat_ctx);
>>>> @@ -1848,6 +1853,8 @@
>>>> }
>>>> is->audio_hw_buf_size = spec.size;
>>>> is->audio_src_fmt= SAMPLE_FMT_S16;
>>>> + is->audio_sample_rate = spec.freq;
>>>> + is->audio_sample_rate_changed = 0;
>>>> }
>>>>
>>>> ic->streams[stream_index]->discard = AVDISCARD_DEFAULT;
>>>> @@ -2136,6 +2143,30 @@
>>>> eof= 0;
>>>> }
>>>>
>>>> + if( is->audio_sample_rate_changed ) {
>>>> + SDL_AudioSpec wanted_spec, spec;
>>>> +fprintf(stderr, "sample rate changed to: %d\n", is->audio_sample_rate);
>>>> + is->audio_sample_rate_changed = 0;
>>>> +
>>>> + SDL_CloseAudio();
>>>> +
>>> indention is off, trailing whitespace and you maybe could use
>>> stream_component_open()
>> that I tried 1st, but stream_component_open() drops the whole audio packet
>> queue, so the sound is totally off afterwards. But of course I could factor
>> out the SDL audio related pieces and use them here and in
>> stream_component_open()..
>
> anything is better than duplicating code (with its bugs)
right. btw, is the place I perform the change of sample rate the right one?
>
> [...]
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at mplayerhq.hu
> https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list