diff mbox series

[FFmpeg-devel,05/11] fftools/ffmpeg: stop using AVStream.side_data

Message ID 20230927131242.1950-6-jamrial@gmail.com
State New
Headers show
Series AVCodecContext and AVCodecParameters side data | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

James Almer Sept. 27, 2023, 1:12 p.m. UTC
Signed-off-by: James Almer <jamrial@gmail.com>
---
 fftools/ffmpeg_demux.c    | 12 ++++++++----
 fftools/ffmpeg_enc.c      | 31 +++++++++----------------------
 fftools/ffmpeg_filter.c   |  6 +++++-
 fftools/ffmpeg_mux_init.c | 21 ++++++++++++---------
 4 files changed, 34 insertions(+), 36 deletions(-)

Comments

Anton Khirnov Oct. 3, 2023, 11:50 a.m. UTC | #1
Quoting James Almer (2023-09-27 15:12:36)
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  fftools/ffmpeg_demux.c    | 12 ++++++++----
>  fftools/ffmpeg_enc.c      | 31 +++++++++----------------------
>  fftools/ffmpeg_filter.c   |  6 +++++-
>  fftools/ffmpeg_mux_init.c | 21 ++++++++++++---------
>  4 files changed, 34 insertions(+), 36 deletions(-)

Looks good, except for weird indentation in places.
diff mbox series

Patch

diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index c01852d4cf..b312ff4922 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -482,8 +482,8 @@  static int input_packet_process(Demuxer *d, DemuxMsg *msg, AVPacket *src)
 
     /* add the stream-global side data to the first packet */
     if (ds->nb_packets == 1) {
-        for (int i = 0; i < ist->st->nb_side_data; i++) {
-            AVPacketSideData *src_sd = &ist->st->side_data[i];
+        for (int i = 0; i < ist->st->codecpar->nb_side_data; i++) {
+            AVPacketSideData *src_sd = &ist->st->codecpar->side_data[i];
             uint8_t *dst_data;
 
             if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX)
@@ -979,6 +979,7 @@  static int add_display_matrix_to_stream(const OptionsContext *o,
                                         AVFormatContext *ctx, InputStream *ist)
 {
     AVStream *st = ist->st;
+    AVPacketSideData *sd;
     double rotation = DBL_MAX;
     int hflip = -1, vflip = -1;
     int hflip_set = 0, vflip_set = 0, rotation_set = 0;
@@ -995,12 +996,15 @@  static int add_display_matrix_to_stream(const OptionsContext *o,
     if (!rotation_set && !hflip_set && !vflip_set)
         return 0;
 
-    buf = (int32_t *)av_stream_new_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9);
-    if (!buf) {
+    sd = av_packet_side_data_new(&st->codecpar->side_data, &st->codecpar->nb_side_data,
+                                     AV_PKT_DATA_DISPLAYMATRIX,
+                                     sizeof(int32_t) * 9, 0);
+    if (!sd) {
         av_log(ist, AV_LOG_FATAL, "Failed to generate a display matrix!\n");
         return AVERROR(ENOMEM);
     }
 
+    buf = (int32_t *)sd->data;
     av_display_rotation_set(buf,
                             rotation_set ? -(rotation) : -0.0f);
 
diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c
index b40a6211a9..a106399279 100644
--- a/fftools/ffmpeg_enc.c
+++ b/fftools/ffmpeg_enc.c
@@ -457,20 +457,6 @@  int enc_open(OutputStream *ost, AVFrame *frame)
         return ret;
     }
 
-    if (ost->enc_ctx->nb_coded_side_data) {
-        int i;
-
-        for (i = 0; i < ost->enc_ctx->nb_coded_side_data; i++) {
-            const AVPacketSideData *sd_src = &ost->enc_ctx->coded_side_data[i];
-            uint8_t *dst_data;
-
-            dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size);
-            if (!dst_data)
-                return AVERROR(ENOMEM);
-            memcpy(dst_data, sd_src->data, sd_src->size);
-        }
-    }
-
     /*
      * Add global input side data. For now this is naive, and copies it
      * from the input stream's global side data. All side data should
@@ -480,15 +466,16 @@  int enc_open(OutputStream *ost, AVFrame *frame)
      */
     if (ist) {
         int i;
-        for (i = 0; i < ist->st->nb_side_data; i++) {
-            AVPacketSideData *sd = &ist->st->side_data[i];
-            if (sd->type != AV_PKT_DATA_CPB_PROPERTIES) {
-                uint8_t *dst = av_stream_new_side_data(ost->st, sd->type, sd->size);
-                if (!dst)
+        for (i = 0; i < ist->st->codecpar->nb_side_data; i++) {
+            AVPacketSideData *sd_src = &ist->st->codecpar->side_data[i];
+            if (sd_src->type != AV_PKT_DATA_CPB_PROPERTIES) {
+                AVPacketSideData *sd_dst = av_packet_side_data_new(&ost->par_in->side_data, &ost->par_in->nb_side_data,
+                                                                       sd_src->type, sd_src->size, 0);
+                if (!sd_dst)
                     return AVERROR(ENOMEM);
-                memcpy(dst, sd->data, sd->size);
-                if (ist->autorotate && sd->type == AV_PKT_DATA_DISPLAYMATRIX)
-                    av_display_rotation_set((int32_t *)dst, 0);
+                memcpy(sd_dst->data, sd_src->data, sd_src->size);
+                if (ist->autorotate && sd_src->type == AV_PKT_DATA_DISPLAYMATRIX)
+                    av_display_rotation_set((int32_t *)sd_dst->data, 0);
             }
         }
     }
diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
index 9bf870b615..4c8e4c2d99 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -1383,11 +1383,15 @@  static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter,
 
     // TODO: insert hwaccel enabled filters like transpose_vaapi into the graph
     if (ist->autorotate && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
+        const AVPacketSideData *sd = NULL;
         int32_t *displaymatrix = ifp->displaymatrix;
         double theta;
 
         if (!ifp->displaymatrix_present)
-            displaymatrix = (int32_t *)av_stream_get_side_data(ist->st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
+            sd = av_packet_side_data_get(ist->st->codecpar->side_data, ist->st->codecpar->nb_side_data,
+                                         AV_PKT_DATA_DISPLAYMATRIX);
+        if (sd)
+            displaymatrix = (int32_t *)sd->data;
         theta = get_rotation(displaymatrix);
 
         if (fabs(theta - 90) < 1.0) {
diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c
index 9d6f442068..201f09e3e2 100644
--- a/fftools/ffmpeg_mux_init.c
+++ b/fftools/ffmpeg_mux_init.c
@@ -1045,24 +1045,27 @@  static int streamcopy_init(const Muxer *mux, OutputStream *ost)
         }
     }
 
-    for (int i = 0; i < ist->st->nb_side_data; i++) {
-        const AVPacketSideData *sd_src = &ist->st->side_data[i];
-        uint8_t *dst_data;
+    for (int i = 0; i < ist->st->codecpar->nb_side_data; i++) {
+        const AVPacketSideData *sd_src = &ist->st->codecpar->side_data[i];
+        AVPacketSideData *sd_dst;
 
-        dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size);
-        if (!dst_data) {
+        sd_dst = av_packet_side_data_new(&ost->st->codecpar->side_data, &ost->st->codecpar->nb_side_data,
+		                                 sd_src->type, sd_src->size, 0);
+        if (!sd_dst) {
             ret = AVERROR(ENOMEM);
             goto fail;
         }
-        memcpy(dst_data, sd_src->data, sd_src->size);
+        memcpy(sd_dst->data, sd_src->data, sd_src->size);
     }
 
 #if FFMPEG_ROTATION_METADATA
     if (ost->rotate_overridden) {
-        uint8_t *sd = av_stream_new_side_data(ost->st, AV_PKT_DATA_DISPLAYMATRIX,
-                                              sizeof(int32_t) * 9);
+        AVPacketSideData *sd = av_packet_side_data_new(&ost->st->codecpar->side_data,
+                                                       &ost->st->codecpar->nb_side_data,
+                                                           AV_PKT_DATA_DISPLAYMATRIX,
+                                                           sizeof(int32_t) * 9, 0);
         if (sd)
-            av_display_rotation_set((int32_t *)sd, -ost->rotate_override_value);
+            av_display_rotation_set((int32_t *)sd->data, -ost->rotate_override_value);
     }
 #endif