>>>>> > [wmav2 @ 0x106829e20] prev_block_len_bits N out of range
>>>>> > (where N is in the range 4..6).
>>>>>
>>>>> Do these errors occur when you're decoding only a single file, without
>>>>> threading?
>>>>
>>>> Yes they do, and on both platforms, though I've never seen them cause
>>>> a segfault when not parallelised. Also interspersed with those errors
>>>> are
>>>> [wmav2 @ 0x1030a9800] overflow in spectral RLE, ignoring
>>>> [wmav2 @ 0x1030a9800] frame_len overflow
>>>>
>>>> And very occasionally
>>>> [wmav2 @ 0x1030a9800] len -211 invalid
>>>>
>>>> Do these errors suggest anything in particular to you?
>>>
>>> Yes, is it possible you're not setting AVCodecContext->bit_rate,
>>> ->block_align, ->extradata or ->extradata_size?
>>
>> I had thought (based on what I'd read in the ffmpeg doxygen) that all
>> of those fields (certainly bit_rate, extra_data and extradata_size)
>> were set internally by libav for decoding, and only needed to be set
>> by the user for encoding?
>>
>> If I'm wrong, could you suggest what I should set them to, for a
>> general decoding solution? I'm seeing no examples online that set
>> them.
>
> They are set, but (in the case of WMA) by the demuxer instead of the
> decoder. My impression is you're not using the
> AVFormatContext->streams[%d]->codec for decoding, but rather create
> one independently. Then you need to copy the demuxer values to the
> decoder values. If you're using your own demuxer instead of
> libavformat's, see libavformat for how to read them.
>
> Ronald
I'm doing something in the neighbourhood of this:
AVCodecContext* cCtx = fCtx->streams[audioStream]->codec;
codec = avcodec_find_decoder(cCtx->codec_id);
if(codec == NULL){
throw Exception();
}
if(avcodec_open2(cCtx, codec, &opts) < 0){
throw Exception();
}
And then passing that codec context into the decode job. So I think
that should be fine, no?
Ibrahim
_______________________________________________
libav-api mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-api