I'm working on an application that receives h.264 frames from camera, decodes
them and displays them on the screen.
I have met a problem which occurs when code (in file h264.c):
case NAL_SLICE:
init_get_bits(&hx->s.gb, ptr, bit_length);
hx->intra_gb_ptr =
hx->inter_gb_ptr = &hx->s.gb;
hx->s.data_partitioning = 0;
if ((err = decode_slice_header(hx, h)))
break;
is reached with bit_length set to 0. Function init_get_bits() sets
hx->s.gb->buffer to NULL, then hx is passed to function decode_slice_heder()
which calls get_ue_golomb(&s.gb). The result is access violation error.
bit_length=0 is a result of calling ff_h264_decode_nal().
Application works without any crash with added error checking:
if (init_get_bits(&hx->s.gb, ptr, bit_length) == AVERROR_INVALIDDATA) {
buf_index = -1;
goto end;
}
Is it a bug or maybe it is a problem with h.264 stream?
P.K._______________________________________________
libav-api mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-api