Browse Source

Merge commit '728ea23cce07467b732f538c87c13da13dd6dcf3'

* commit '728ea23cce07467b732f538c87c13da13dd6dcf3':
  examples/decode_video: switch to the new decoding API

Merged-by: James Almer <jamrial@gmail.com>
tags/n3.4
James Almer 8 years ago
parent
commit
52bce9a13d
1 changed files with 23 additions and 22 deletions
  1. +23
    -22
      doc/examples/decode_video.c

+ 23
- 22
doc/examples/decode_video.c View File

@@ -52,28 +52,31 @@ static void decode(AVCodecContext *dec_ctx, AVFrame *frame, AVPacket *pkt,
const char *filename)
{
char buf[1024];
int ret, got_picture;
int ret;

ret = avcodec_send_packet(dec_ctx, pkt);
if (ret < 0) {
fprintf(stderr, "Error sending a packet for decoding\n");
exit(1);
}

while (pkt->size > 0) {
ret = avcodec_decode_video2(dec_ctx, frame, &got_picture, pkt);
if (ret < 0) {
fprintf(stderr, "Error while decoding frame %d\n", dec_ctx->frame_number);
while (ret >= 0) {
ret = avcodec_receive_frame(dec_ctx, frame);
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
return;
else if (ret < 0) {
fprintf(stderr, "Error during decoding\n");
exit(1);
}
if (got_picture) {
printf("saving frame %3d\n", dec_ctx->frame_number);
fflush(stdout);

/* the picture is allocated by the decoder. no need to
free it */
snprintf(buf, sizeof(buf), filename, dec_ctx->frame_number);
pgm_save(frame->data[0], frame->linesize[0],
frame->width, frame->height, buf);
}
if (pkt->data) {
pkt->size -= ret;
pkt->data += ret;
}

printf("saving frame %3d\n", dec_ctx->frame_number);
fflush(stdout);

/* the picture is allocated by the decoder. no need to
free it */
snprintf(buf, sizeof(buf), filename, dec_ctx->frame_number);
pgm_save(frame->data[0], frame->linesize[0],
frame->width, frame->height, buf);
}
}

@@ -170,9 +173,7 @@ int main(int argc, char **argv)
}

/* flush the decoder */
avpkt.data = NULL;
avpkt.size = 0;
decode(c, frame, &avpkt, outfilename);
decode(c, frame, NULL, outfilename);

fclose(f);



Loading…
Cancel
Save