| 69 | } |
| 70 | |
| 71 | static int encode_write(AVCodecContext *avctx, AVFrame *frame, FILE *fout) |
| 72 | { |
| 73 | int ret = 0; |
| 74 | AVPacket *enc_pkt; |
| 75 | |
| 76 | if (!(enc_pkt = av_packet_alloc())) |
| 77 | return AVERROR(ENOMEM); |
| 78 | |
| 79 | if ((ret = avcodec_send_frame(avctx, frame)) < 0) { |
| 80 | fprintf(stderr, "Error code: %s\n", av_err2str(ret)); |
| 81 | goto end; |
| 82 | } |
| 83 | while (1) { |
| 84 | ret = avcodec_receive_packet(avctx, enc_pkt); |
| 85 | if (ret) |
| 86 | break; |
| 87 | |
| 88 | enc_pkt->stream_index = 0; |
| 89 | ret = fwrite(enc_pkt->data, enc_pkt->size, 1, fout); |
| 90 | av_packet_unref(enc_pkt); |
| 91 | if (!ret) { |
| 92 | ret = AVERROR(errno); |
| 93 | break; |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | end: |
| 98 | av_packet_free(&enc_pkt); |
| 99 | ret = ((ret == AVERROR(EAGAIN)) ? 0 : -1); |
| 100 | return ret; |
| 101 | } |
| 102 | |
| 103 | int main(int argc, char *argv[]) |
| 104 | { |
no test coverage detected