| 107 | } |
| 108 | |
| 109 | static int encode_write(AVPacket *enc_pkt, AVFrame *frame) |
| 110 | { |
| 111 | int ret = 0; |
| 112 | |
| 113 | av_packet_unref(enc_pkt); |
| 114 | |
| 115 | if ((ret = avcodec_send_frame(encoder_ctx, frame)) < 0) { |
| 116 | fprintf(stderr, "Error during encoding. Error code: %s\n", av_err2str(ret)); |
| 117 | goto end; |
| 118 | } |
| 119 | while (1) { |
| 120 | ret = avcodec_receive_packet(encoder_ctx, enc_pkt); |
| 121 | if (ret) |
| 122 | break; |
| 123 | |
| 124 | enc_pkt->stream_index = 0; |
| 125 | av_packet_rescale_ts(enc_pkt, ifmt_ctx->streams[video_stream]->time_base, |
| 126 | ofmt_ctx->streams[0]->time_base); |
| 127 | ret = av_interleaved_write_frame(ofmt_ctx, enc_pkt); |
| 128 | if (ret < 0) { |
| 129 | fprintf(stderr, "Error during writing data to output file. " |
| 130 | "Error code: %s\n", av_err2str(ret)); |
| 131 | return -1; |
| 132 | } |
| 133 | } |
| 134 | |
| 135 | end: |
| 136 | if (ret == AVERROR_EOF) |
| 137 | return 0; |
| 138 | ret = ((ret == AVERROR(EAGAIN)) ? 0:-1); |
| 139 | return ret; |
| 140 | } |
| 141 | |
| 142 | static int dec_enc(AVPacket *pkt, const AVCodec *enc_codec) |
| 143 | { |
no test coverage detected