* In the AVCodecDecoder, use the audio format of the original input format,
but specify it to 16bits/sample if it's still a wildcard. Make sure to allocate the scrub buffer with the correct sample size (was hardcoded to 2 bytes per sample). * In the AVFormatReader, specify the sample format for B_MEDIA_ENCODED_AUDIO. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32185 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -334,7 +334,11 @@ AVCodecDecoder::_NegotiateAudioOutputFormat(media_format* inOutFormat)
|
|||||||
= fInputFormat.u.encoded_audio.output.frame_rate;
|
= fInputFormat.u.encoded_audio.output.frame_rate;
|
||||||
outputAudioFormat.channel_count
|
outputAudioFormat.channel_count
|
||||||
= fInputFormat.u.encoded_audio.output.channel_count;
|
= fInputFormat.u.encoded_audio.output.channel_count;
|
||||||
outputAudioFormat.format = media_raw_audio_format::B_AUDIO_SHORT;
|
outputAudioFormat.format = fInputFormat.u.encoded_audio.output.format;
|
||||||
|
// Check that format is not still a wild card!
|
||||||
|
if (outputAudioFormat.format == 0)
|
||||||
|
outputAudioFormat.format = media_raw_audio_format::B_AUDIO_SHORT;
|
||||||
|
|
||||||
outputAudioFormat.buffer_size
|
outputAudioFormat.buffer_size
|
||||||
= 1024 * fInputFormat.u.encoded_audio.output.channel_count;
|
= 1024 * fInputFormat.u.encoded_audio.output.channel_count;
|
||||||
inOutFormat->type = B_MEDIA_RAW_AUDIO;
|
inOutFormat->type = B_MEDIA_RAW_AUDIO;
|
||||||
@@ -367,7 +371,9 @@ AVCodecDecoder::_NegotiateAudioOutputFormat(media_format* inOutFormat)
|
|||||||
result);
|
result);
|
||||||
|
|
||||||
fStartTime = 0;
|
fStartTime = 0;
|
||||||
fOutputFrameSize = 2 * outputAudioFormat.channel_count;
|
size_t sampleSize = outputAudioFormat.format
|
||||||
|
& media_raw_audio_format::B_AUDIO_SIZE_MASK;
|
||||||
|
fOutputFrameSize = sampleSize * outputAudioFormat.channel_count;
|
||||||
fOutputFrameCount = outputAudioFormat.buffer_size / fOutputFrameSize;
|
fOutputFrameCount = outputAudioFormat.buffer_size / fOutputFrameSize;
|
||||||
fOutputFrameRate = outputAudioFormat.frame_rate;
|
fOutputFrameRate = outputAudioFormat.frame_rate;
|
||||||
fChunkBuffer = 0;
|
fChunkBuffer = 0;
|
||||||
|
|||||||
@@ -479,7 +479,7 @@ AVFormatReader::StreamCookie::Init(int32 virtualIndex)
|
|||||||
format->u.encoded_audio.frame_size = codecContext->frame_size;
|
format->u.encoded_audio.frame_size = codecContext->frame_size;
|
||||||
// Fill in some info about possible output format
|
// Fill in some info about possible output format
|
||||||
format->u.encoded_audio.output
|
format->u.encoded_audio.output
|
||||||
= media_multi_audio_format::wildcard;
|
= avformat_to_beos_format(codecContext->sample_fmt);
|
||||||
format->u.encoded_audio.output.frame_rate
|
format->u.encoded_audio.output.frame_rate
|
||||||
= (float)codecContext->sample_rate;
|
= (float)codecContext->sample_rate;
|
||||||
format->u.encoded_audio.output.channel_count
|
format->u.encoded_audio.output.channel_count
|
||||||
|
|||||||
Reference in New Issue
Block a user