[FFmpeg-devel] [PATCH 2/6] lavu: add pkt_flags field to AVFrame.

Nicolas George george at nsup.org
Fri Feb 21 20:50:14 CET 2014


From: Nicolas George <nicolas.george at normalesup.org>

Also fill it in lavc with the packet flags.

Signed-off-by: Nicolas George <george at nsup.org>
---
 libavcodec/utils.c |  2 ++
 libavutil/frame.c  |  2 ++
 libavutil/frame.h  | 11 +++++++++++
 3 files changed, 15 insertions(+)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index d24854a..61a72ea 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -756,11 +756,13 @@ int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame)
         av_frame_set_pkt_pos     (frame, avctx->internal->pkt->pos);
         av_frame_set_pkt_duration(frame, avctx->internal->pkt->duration);
         av_frame_set_pkt_size    (frame, avctx->internal->pkt->size);
+        av_frame_set_pkt_flags   (frame, avctx->internal->pkt->flags);
     } else {
         frame->pkt_pts = AV_NOPTS_VALUE;
         av_frame_set_pkt_pos     (frame, -1);
         av_frame_set_pkt_duration(frame, 0);
         av_frame_set_pkt_size    (frame, -1);
+        av_frame_set_pkt_flags   (frame, 0);
     }
     frame->reordered_opaque = avctx->reordered_opaque;
 
diff --git a/libavutil/frame.c b/libavutil/frame.c
index 75a1c28..dee51e0 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -30,6 +30,7 @@
 MAKE_ACCESSORS(AVFrame, frame, int64_t, best_effort_timestamp)
 MAKE_ACCESSORS(AVFrame, frame, int64_t, pkt_duration)
 MAKE_ACCESSORS(AVFrame, frame, int64_t, pkt_pos)
+MAKE_ACCESSORS(AVFrame, frame, int,     pkt_flags)
 MAKE_ACCESSORS(AVFrame, frame, int64_t, channel_layout)
 MAKE_ACCESSORS(AVFrame, frame, int,     channels)
 MAKE_ACCESSORS(AVFrame, frame, int,     sample_rate)
@@ -471,6 +472,7 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
     dst->pkt_pos                = src->pkt_pos;
     dst->pkt_size               = src->pkt_size;
     dst->pkt_duration           = src->pkt_duration;
+    dst->pkt_flags              = src->pkt_flags;
     dst->reordered_opaque       = src->reordered_opaque;
     dst->quality                = src->quality;
     dst->best_effort_timestamp  = src->best_effort_timestamp;
diff --git a/libavutil/frame.h b/libavutil/frame.h
index b423f67..5f82f17 100644
--- a/libavutil/frame.h
+++ b/libavutil/frame.h
@@ -535,6 +535,15 @@ typedef struct AVFrame {
      * Not to be accessed directly from outside libavutil
      */
     AVBufferRef *qp_table_buf;
+
+    /**
+     * Flags copied from the AVPacket that was decoded to produce this frame.
+     * Not to be accessed directly from outside libavutil
+     * - encoding: unused
+     * - decoding: set and used by lavc
+     */
+    int pkt_flags;
+
 } AVFrame;
 
 /**
@@ -548,6 +557,8 @@ int64_t av_frame_get_pkt_duration         (const AVFrame *frame);
 void    av_frame_set_pkt_duration         (AVFrame *frame, int64_t val);
 int64_t av_frame_get_pkt_pos              (const AVFrame *frame);
 void    av_frame_set_pkt_pos              (AVFrame *frame, int64_t val);
+int     av_frame_get_pkt_flags            (const AVFrame *frame);
+void    av_frame_set_pkt_flags            (AVFrame *frame, int val);
 int64_t av_frame_get_channel_layout       (const AVFrame *frame);
 void    av_frame_set_channel_layout       (AVFrame *frame, int64_t val);
 int     av_frame_get_channels             (const AVFrame *frame);
-- 
1.8.5.3



More information about the ffmpeg-devel mailing list