Hi,

On Mon, Feb 13, 2012 at 12:19 PM, Ibrahim Sha'ath
<[email protected]> wrote:
>> >>>>>> > [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.
>> >>
>> >
>> > 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?
>>
>> Probably. Can a tool like avconv or avplay playback the file
>> succesfully without throwing errors?
>
> Yes. Plays back with no errors at all.

Can we see your full code? It's possible you're initializing the code
at the wrong moment when these things aren't known yet...

Ronald
_______________________________________________
libav-api mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-api

Reply via email to