mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-27 01:42:20 +00:00
avcodec/extract_extradata_bsf: use the parsing code from mpeg4video_split()
It's a simplifaction of the same code, originally commited as 3b5ad8fbf7
.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
173fdc4dea
commit
b53ac2a528
@ -201,14 +201,14 @@ static int extract_extradata_mpeg4(AVBSFContext *ctx, AVPacket *pkt,
|
||||
uint8_t **data, int *size)
|
||||
{
|
||||
ExtractExtradataContext *s = ctx->priv_data;
|
||||
const uint8_t *ptr = pkt->data, *end = pkt->data + pkt->size;
|
||||
uint32_t state = UINT32_MAX;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < pkt->size; i++) {
|
||||
state = (state << 8) | pkt->data[i];
|
||||
if ((state == 0x1B3 || state == 0x1B6)) {
|
||||
if (i > 3) {
|
||||
*size = i - 3;
|
||||
while (ptr < end) {
|
||||
ptr = avpriv_find_start_code(ptr, end, &state);
|
||||
if (state == 0x1B3 || state == 0x1B6) {
|
||||
if (ptr - pkt->data > 4) {
|
||||
*size = ptr - 4 - pkt->data;
|
||||
*data = av_malloc(*size + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!*data)
|
||||
return AVERROR(ENOMEM);
|
||||
|
Loading…
Reference in New Issue
Block a user