[FFmpeg-devel] [PATCH] Add libavsequencer.

Sebastian Vater cdgs.basty
Thu Aug 19 01:43:31 CEST 2010


Michael Niedermayer a ?crit :
> On Thu, Aug 19, 2010 at 12:07:02AM +0200, Sebastian Vater wrote:
>   
>> M?ns Rullg?rd a ?crit :
>>     
>>> Sebastian Vater <cdgs.basty at googlemail.com> writes:
>>>
>>>   
>>>       
>>>> Ronald S. Bultje a ?crit :
>>>>     
>>>>         
>>>>> Hi,
>>>>>
>>>>> On Wed, Aug 18, 2010 at 4:48 PM, Sebastian Vater
>>>>> <cdgs.basty at googlemail.com> wrote:
>>>>>   
>>>>>       
>>>>>           
>>>>>> So I think, the best way to continue this discussion is to decide to
>>>>>> keep mixers in avseq or to move somewhere else, if the latter one then
>>>>>> where it should finally go? avfilter?
>>>>>>     
>>>>>>         
>>>>>>             
>>>>> I think I'm confused, but what is lavseq if it's not the mixer? It
>>>>> can't be BSS, because BSS will be in libavcodec/, since the decoders
>>>>> out there will depend on it for parsing mod files.
>>>>>   
>>>>>       
>>>>>           
>>>> Just another point I might should mention...
>>>>
>>>> A mixer can also be used perfectly to convert a simple WAV file input
>>>> sampling rate to a different sampling rate.
>>>>
>>>> To accomplish that, you would (for a mono WAV) simply allocate one
>>>> channel in the mixer, set it's to input sample frequency, bit depth, set
>>>> volume to full (0xFF), panning to left and set the mixer output
>>>> frequency to target sampling rate desired.
>>>>
>>>> You'll get a (32-PCM version) though of the input WAV file at the target
>>>> sampling rate. Just dither that to the WAV file input sampling rate, and
>>>> you have simple resampling.
>>>>     
>>>>         
>>> Resampling must be done by the resampler we already have.  The most
>>> obvious way would be to convert all samples to the target rate when
>>> loading them, then mix them at that rate.
>>>   
>>>       
>> These examples were just supposed for better understanding of how mixers
>> work, since I noticed some confusion here. For such simple tasks, we
>> should of course the specialized resamplers we already have.
>>
>> Unfortunately, for mod this won't work, because each sample can have
>> practically any sample rate, stereo position, volume level (independent
>> of each channel) at any playback position.
>>
>> So to say, the resampler you spoke of is mathematically a sub-set of the
>> mixer I'm discussing, but however specially optimized for that task.
>>
>> I don't know right the details and limits of the resampler we already
>> have, but if it can accomplish the tasks I mentioned for mods above, we
>> can change avsequencer to use the already resampler (maybe extending it
>> a bit).
>>
>> Could someone please summarize the features of our current resampler?
>>     
>
> it can resample :)
> its also capable to adjust the sample rate dynamically within a small
> window around the setup samplerate.
>   

Just a question, why only in a small window? I ask because my mixers
allow to change the sample rate in a full range at full freewill. Are
there specific reasons for this?

> iam not sure if it can be used and i dont think we should try too hard
> to do that at this point. maybe at some point the resampler and the mixer
> could be merged somehow but this is probably better to be considered after
> the code is in svn.
>   

Agree, but interesting anyway to keep this in mind. This will further
reduce code duplication.

> a unrelated idea that just crossed my mind is that as the mixer mixes
> things together there is likely alot of repeated work done, like things
> being resampled to the same rates. This could be cached to speedup mixing
>
>   

That's a great idea! There should be a function which just copies the
sample data if rate matches, volume is at full level and panning is
simply left, right, centered or surround.

-- 

Best regards,
                   :-) Basty/CDGS (-:




More information about the ffmpeg-devel mailing list