diff options
Diffstat (limited to 'filters/frame.c')
-rw-r--r-- | filters/frame.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/filters/frame.c b/filters/frame.c index f1d4c98eab..200e900fa2 100644 --- a/filters/frame.c +++ b/filters/frame.c @@ -14,6 +14,7 @@ struct frame_handler { void *(*new_ref)(void *data); double (*get_pts)(void *data); void (*set_pts)(void *data, double pts); + int (*approx_size)(void *data); AVFrame *(*new_av_ref)(void *data); void *(*from_av_ref)(AVFrame *data); void (*free)(void *data); @@ -34,6 +35,11 @@ static void video_set_pts(void *data, double pts) ((struct mp_image *)data)->pts = pts; } +static int video_approx_size(void *data) +{ + return mp_image_approx_byte_size(data); +} + static AVFrame *video_new_av_ref(void *data) { return mp_image_to_av_frame(data); @@ -59,6 +65,11 @@ static void audio_set_pts(void *data, double pts) mp_aframe_set_pts(data, pts); } +static int audio_approx_size(void *data) +{ + return mp_aframe_approx_byte_size(data); +} + static AVFrame *audio_new_av_ref(void *data) { return mp_aframe_to_avframe(data); @@ -88,6 +99,7 @@ static const struct frame_handler frame_handlers[] = { .new_ref = video_ref, .get_pts = video_get_pts, .set_pts = video_set_pts, + .approx_size = video_approx_size, .new_av_ref = video_new_av_ref, .from_av_ref = video_from_av_ref, .free = talloc_free, @@ -98,6 +110,7 @@ static const struct frame_handler frame_handlers[] = { .new_ref = audio_ref, .get_pts = audio_get_pts, .set_pts = audio_set_pts, + .approx_size = audio_approx_size, .new_av_ref = audio_new_av_ref, .from_av_ref = audio_from_av_ref, .free = talloc_free, @@ -160,6 +173,13 @@ void mp_frame_set_pts(struct mp_frame frame, double pts) frame_handlers[frame.type].set_pts(frame.data, pts); } +int mp_frame_approx_size(struct mp_frame frame) +{ + if (frame_handlers[frame.type].approx_size) + return frame_handlers[frame.type].approx_size(frame.data); + return 0; +} + AVFrame *mp_frame_to_av(struct mp_frame frame, struct AVRational *tb) { if (!frame_handlers[frame.type].new_av_ref) |