Skip to content

Commit 76a0468

Browse files
rename video encoding functions
1 parent 328c1aa commit 76a0468

1 file changed

Lines changed: 10 additions & 9 deletions

File tree

3_transcoding.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ int prepare_decoder(StreamingContext *sc) {
7373
return 0;
7474
}
7575

76-
int prepare_encoder(StreamingContext *sc, AVCodecContext *decoder_ctx, AVRational input_framerate, StreamingParams sp) {
76+
int prepare_video_encoder(StreamingContext *sc, AVCodecContext *decoder_ctx, AVRational input_framerate, StreamingParams sp) {
7777
sc->video_avs = avformat_new_stream(sc->avfc, NULL);
7878

7979
char *codec_name = strcmp(sp.video_codec, "x264") == 0 ? "libx264" : "libx265";
@@ -154,7 +154,7 @@ int remux(AVPacket **pkt, AVFormatContext **avfc, AVRational decoder_tb, AVRatio
154154
return 0;
155155
}
156156

157-
int encode(StreamingContext *decoder, StreamingContext *encoder, AVFrame *input_frame) {
157+
int encode_video(StreamingContext *decoder, StreamingContext *encoder, AVFrame *input_frame) {
158158
AVPacket *output_packet = av_packet_alloc();
159159
if (!output_packet) {logging("could not allocate memory for output packet"); return -1;}
160160

@@ -172,7 +172,6 @@ int encode(StreamingContext *decoder, StreamingContext *encoder, AVFrame *input_
172172
output_packet->stream_index = decoder->video_index;
173173
output_packet->duration = encoder->video_avs->time_base.den / encoder->video_avs->time_base.num / decoder->video_avs->avg_frame_rate.num * decoder->video_avs->avg_frame_rate.den;
174174

175-
176175
av_packet_rescale_ts(output_packet, decoder->video_avs->time_base, encoder->video_avs->time_base);
177176
response = av_interleaved_write_frame(encoder->avfc, output_packet);
178177
if (response != 0) { logging("Error %d while receiving packet from decoder: %s", response, av_err2str(response)); return -1;}
@@ -229,7 +228,7 @@ int transcode_audio(StreamingContext *decoder, StreamingContext *encoder, AVPack
229228
return 0;
230229
}
231230

232-
int transcode(StreamingContext *decoder, StreamingContext *encoder, AVPacket *input_packet, AVFrame *input_frame) {
231+
int transcode_video(StreamingContext *decoder, StreamingContext *encoder, AVPacket *input_packet, AVFrame *input_frame) {
233232
int response = avcodec_send_packet(decoder->video_avcc, input_packet);
234233
if (response < 0) {logging("Error while sending packet to decoder: %s", av_err2str(response)); return response;}
235234

@@ -243,7 +242,7 @@ int transcode(StreamingContext *decoder, StreamingContext *encoder, AVPacket *in
243242
}
244243

245244
if (response >= 0) {
246-
if (encode(decoder, encoder, input_frame)) return -1;
245+
if (encode_video(decoder, encoder, input_frame)) return -1;
247246
}
248247
av_frame_unref(input_frame);
249248
}
@@ -273,7 +272,7 @@ int main(int argc, char *argv[])
273272

274273
if (!sp.copy_video) {
275274
AVRational input_framerate = av_guess_frame_rate(decoder->avfc, decoder->video_avs, NULL);
276-
prepare_encoder(encoder, decoder->video_avcc, input_framerate, sp);
275+
prepare_video_encoder(encoder, decoder->video_avcc, input_framerate, sp);
277276
} else {
278277
if (prepare_copy(encoder->avfc, &encoder->video_avs, decoder->video_avs->codecpar)) {return -1;}
279278
}
@@ -312,14 +311,15 @@ int main(int argc, char *argv[])
312311
{
313312
if (decoder->avfc->streams[input_packet->stream_index]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
314313
if (!sp.copy_video) {
315-
if (transcode(decoder, encoder, input_packet, input_frame)) return -1;
314+
// TODO: refactor to be generic for audio and video (receiving a function pointer to the differences)
315+
if (transcode_video(decoder, encoder, input_packet, input_frame)) return -1;
316316
av_packet_unref(input_packet);
317317
} else {
318318
if (remux(&input_packet, &encoder->avfc, decoder->video_avs->time_base, encoder->video_avs->time_base)) return -1;
319319
}
320320
} else if (decoder->avfc->streams[input_packet->stream_index]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
321321
if (!sp.copy_audio) {
322-
transcode_audio(decoder, encoder, input_packet, input_frame);
322+
if (transcode_audio(decoder, encoder, input_packet, input_frame)) return -1;
323323
av_packet_unref(input_packet);
324324
} else {
325325
if (remux(&input_packet, &encoder->avfc, decoder->audio_avs->time_base, encoder->audio_avs->time_base)) return -1;
@@ -328,7 +328,8 @@ int main(int argc, char *argv[])
328328
logging("ignoring all non video or audio packets");
329329
}
330330
}
331-
if (encode(decoder, encoder, NULL)) return -1;
331+
// TODO: should I also flush the audio encoder?
332+
if (encode_video(decoder, encoder, NULL)) return -1;
332333

333334
av_write_trailer(encoder->avfc);
334335

0 commit comments

Comments
 (0)