source of highlighter
plain | download
    1 From: 52c3e9c0f140a8742034e107fb0f371c0d73bf1d Mon Sep 17 00:00:00 2001
    2 From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
    3 Date: Sun, 12 Sep 2021 04:20:11 +0200
    4 Subject: [PATCH] chromium-93: fix building with system-ffmpeg
    5 MIME-Version: 1.0
    6 Content-Type: text/plain; charset=UTF-8
    7 Content-Transfer-Encoding: 8bit
    8 
    9 The version of ffmpeg bundled in Chromium changed ABI a little, which
   10 affected the code in that the type of the last parameter of
   11 av_packet_get_side_data() is now size_t instead of int.
   12 
   13 This causes Chromium to fail to build with system-ffmpeg if the system
   14 ffmpeg's version does not yet have this ABI change.
   15 
   16 Fix the code to be able to compile with older ffmpeg as well.
   17 
   18 Signed-off-by: Marek BehĂșn <kabel@kernel.org>
   19 ---
   20  media/filters/audio_decoder_unittest.cc |  4 ++++
   21  media/filters/ffmpeg_demuxer.cc         | 16 ++++++++++++++++
   22  2 files changed, 20 insertions(+)
   23 
   24 diff --git a/media/filters/audio_decoder_unittest.cc b/media/filters/audio_decoder_unittest.cc
   25 --- a/media/filters/audio_decoder_unittest.cc
   26 +++ b/media/filters/audio_decoder_unittest.cc
   27 @@ -109,7 +109,11 @@ void SetDiscardPadding(AVPacket* packet,
   28    }
   29  
   30    // If the timestamp is positive, try to use FFmpeg's discard data.
   31 +#if LIBAVUTIL_VERSION_MAJOR < 57
   32 +  int skip_samples_size = 0;
   33 +#else
   34    size_t skip_samples_size = 0;
   35 +#endif
   36    const uint32_t* skip_samples_ptr =
   37        reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
   38            packet, AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
   39 diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
   40 --- a/media/filters/ffmpeg_demuxer.cc
   41 +++ b/media/filters/ffmpeg_demuxer.cc
   42 @@ -427,11 +427,19 @@ void FFmpegDemuxerStream::EnqueuePacket(
   43    scoped_refptr<DecoderBuffer> buffer;
   44  
   45    if (type() == DemuxerStream::TEXT) {
   46 +#if LIBAVUTIL_VERSION_MAJOR < 57
   47 +    int id_size = 0;
   48 +#else
   49      size_t id_size = 0;
   50 +#endif
   51      uint8_t* id_data = av_packet_get_side_data(
   52          packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size);
   53  
   54 +#if LIBAVUTIL_VERSION_MAJOR < 57
   55 +    int settings_size = 0;
   56 +#else
   57      size_t settings_size = 0;
   58 +#endif
   59      uint8_t* settings_data = av_packet_get_side_data(
   60          packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size);
   61  
   62 @@ -443,7 +451,11 @@ void FFmpegDemuxerStream::EnqueuePacket(
   63      buffer = DecoderBuffer::CopyFrom(packet->data, packet->size,
   64                                       side_data.data(), side_data.size());
   65    } else {
   66 +#if LIBAVUTIL_VERSION_MAJOR < 57
   67 +    int side_data_size = 0;
   68 +#else
   69      size_t side_data_size = 0;
   70 +#endif
   71      uint8_t* side_data = av_packet_get_side_data(
   72          packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
   73  
   74 @@ -504,7 +516,11 @@ void FFmpegDemuxerStream::EnqueuePacket(
   75                                         packet->size - data_offset);
   76      }
   77  
   78 +#if LIBAVUTIL_VERSION_MAJOR < 57
   79 +    int skip_samples_size = 0;
   80 +#else
   81      size_t skip_samples_size = 0;
   82 +#endif
   83      const uint32_t* skip_samples_ptr =
   84          reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
   85              packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));