diff options
author | Alfred E. Heggestad <aeh@db.org> | 2015-06-27 10:13:09 +0200 |
---|---|---|
committer | Alfred E. Heggestad <aeh@db.org> | 2015-06-27 10:13:09 +0200 |
commit | 4172027f214d50348e3fc029e068e8bb4a140deb (patch) | |
tree | 14a9ef65adda898cfefd059d3fdcacbca7d87daf /modules/avcodec | |
parent | f8873153be5480ca6b79741e7cbdf667080e562d (diff) |
vidcodec: move packet-handler to encode_update
Diffstat (limited to 'modules/avcodec')
-rw-r--r-- | modules/avcodec/avcodec.h | 9 | ||||
-rw-r--r-- | modules/avcodec/encode.c | 27 |
2 files changed, 20 insertions, 16 deletions
diff --git a/modules/avcodec/avcodec.h b/modules/avcodec/avcodec.h index 0b275f3..890df5f 100644 --- a/modules/avcodec/avcodec.h +++ b/modules/avcodec/avcodec.h @@ -26,13 +26,12 @@ extern const uint8_t h264_level_idc; struct videnc_state; int encode_update(struct videnc_state **vesp, const struct vidcodec *vc, - struct videnc_param *prm, const char *fmtp); -int encode(struct videnc_state *st, bool update, const struct vidframe *frame, - videnc_packet_h *pkth, void *arg); + struct videnc_param *prm, const char *fmtp, + videnc_packet_h *pkth, void *arg); +int encode(struct videnc_state *st, bool update, const struct vidframe *frame); #ifdef USE_X264 int encode_x264(struct videnc_state *st, bool update, - const struct vidframe *frame, - videnc_packet_h *pkth, void *arg); + const struct vidframe *frame); #endif diff --git a/modules/avcodec/encode.c b/modules/avcodec/encode.c index f68b31f..9d1f3a2 100644 --- a/modules/avcodec/encode.c +++ b/modules/avcodec/encode.c @@ -37,6 +37,8 @@ struct videnc_state { struct videnc_param encprm; struct vidsz encsize; enum AVCodecID codec_id; + videnc_packet_h *pkth; + void *arg; union { struct { @@ -408,12 +410,13 @@ static int open_encoder_x264(struct videnc_state *st, struct videnc_param *prm, int encode_update(struct videnc_state **vesp, const struct vidcodec *vc, - struct videnc_param *prm, const char *fmtp) + struct videnc_param *prm, const char *fmtp, + videnc_packet_h *pkth, void *arg) { struct videnc_state *st; int err = 0; - if (!vesp || !vc || !prm) + if (!vesp || !vc || !prm || !pkth) return EINVAL; if (*vesp) @@ -424,6 +427,8 @@ int encode_update(struct videnc_state **vesp, const struct vidcodec *vc, return ENOMEM; st->encprm = *prm; + st->pkth = pkth; + st->arg = arg; st->codec_id = avcodec_resolve_codecid(vc->name); if (st->codec_id == AV_CODEC_ID_NONE) { @@ -475,8 +480,7 @@ int encode_update(struct videnc_state **vesp, const struct vidcodec *vc, #ifdef USE_X264 int encode_x264(struct videnc_state *st, bool update, - const struct vidframe *frame, - videnc_packet_h *pkth, void *arg) + const struct vidframe *frame) { x264_picture_t pic_in, pic_out; x264_nal_t *nal; @@ -541,7 +545,7 @@ int encode_x264(struct videnc_state *st, bool update, err = h264_nal_send(true, true, (i+1)==i_nal, hdr, nal[i].p_payload + offset, nal[i].i_payload - offset, - st->encprm.pktsize, pkth, arg); + st->encprm.pktsize, st->pkth, st->arg); } return err; @@ -549,12 +553,11 @@ int encode_x264(struct videnc_state *st, bool update, #endif -int encode(struct videnc_state *st, bool update, const struct vidframe *frame, - videnc_packet_h *pkth, void *arg) +int encode(struct videnc_state *st, bool update, const struct vidframe *frame) { int i, err, ret; - if (!st || !frame || !pkth || frame->fmt != VID_FMT_YUV420P) + if (!st || !frame || frame->fmt != VID_FMT_YUV420P) return EINVAL; if (!st->ctx || !vidsz_cmp(&st->encsize, &frame->size)) { @@ -626,15 +629,17 @@ int encode(struct videnc_state *st, bool update, const struct vidframe *frame, switch (st->codec_id) { case AV_CODEC_ID_H263: - err = h263_packetize(st, st->mb, pkth, arg); + err = h263_packetize(st, st->mb, st->pkth, st->arg); break; case AV_CODEC_ID_H264: - err = h264_packetize(st->mb, st->encprm.pktsize, pkth, arg); + err = h264_packetize(st->mb, st->encprm.pktsize, + st->pkth, st->arg); break; case AV_CODEC_ID_MPEG4: - err = general_packetize(st->mb, st->encprm.pktsize, pkth, arg); + err = general_packetize(st->mb, st->encprm.pktsize, + st->pkth, st->arg); break; default: |