summaryrefslogtreecommitdiffstats
path: root/filters/frame.c
diff options
context:
space:
mode:
Diffstat (limited to 'filters/frame.c')
-rw-r--r--filters/frame.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/filters/frame.c b/filters/frame.c
index 6c5b28e77a..f1d4c98eab 100644
--- a/filters/frame.c
+++ b/filters/frame.c
@@ -2,6 +2,7 @@
#include "audio/aframe.h"
#include "common/av_common.h"
+#include "demux/packet.h"
#include "video/mp_image.h"
#include "frame.h"
@@ -11,7 +12,6 @@ struct frame_handler {
bool is_data;
bool is_signaling;
void *(*new_ref)(void *data);
- // The following must be non-NULL if new_ref is non-NULL.
double (*get_pts)(void *data);
void (*set_pts)(void *data, double pts);
AVFrame *(*new_av_ref)(void *data);
@@ -69,6 +69,11 @@ static void *audio_from_av_ref(AVFrame *data)
return mp_aframe_from_avframe(data);
}
+static void *packet_ref(void *data)
+{
+ return demux_copy_packet(data);
+}
+
static const struct frame_handler frame_handlers[] = {
[MP_FRAME_NONE] = {
.name = "none",
@@ -97,6 +102,12 @@ static const struct frame_handler frame_handlers[] = {
.from_av_ref = audio_from_av_ref,
.free = talloc_free,
},
+ [MP_FRAME_PACKET] = {
+ .name = "packet",
+ .is_data = true,
+ .new_ref = packet_ref,
+ .free = talloc_free,
+ },
};
const char *mp_frame_type_str(enum mp_frame_type t)