Commit f3508af7 authored by Cristian Tuns's avatar Cristian Tuns
Browse files

Backed out changeset e5ff989f1eda (bug 1761471) for causing mochitest failures...

Backed out changeset e5ff989f1eda (bug 1761471) for causing mochitest failures in av_frame_get_color_range CLOSED TREE
parent dc33837c
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -180,12 +180,8 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() {
  AV_FUNC(av_buffer_create,
          (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
           AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
  AV_FUNC_OPTION(av_frame_get_colorspace,
                 AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
                     AV_FUNC_AVUTIL_58)
  AV_FUNC_OPTION(av_frame_get_color_range,
                 AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
                     AV_FUNC_AVUTIL_58)
  AV_FUNC_OPTION(av_frame_get_colorspace, AV_FUNC_AVUTIL_ALL)
  AV_FUNC_OPTION(av_frame_get_color_range, AV_FUNC_AVUTIL_ALL)

#ifdef MOZ_WAYLAND
  AV_FUNC_OPTION_SILENT(avcodec_get_hw_config, AV_FUNC_58 | AV_FUNC_59)
+31 −37
Original line number Diff line number Diff line
@@ -567,8 +567,9 @@ FFmpegVideoDecoder<LIBAV_VER>::AllocateTextureClientForImage(
                              : DefaultColorSpace(data.mPictureRect.Size());
  }
  data.mColorDepth = GetColorDepth(aCodecContext->pix_fmt);
  data.mColorRange = GetFrameColorRange();

  data.mColorRange = aCodecContext->color_range == AVCOL_RANGE_JPEG
                         ? gfx::ColorRange::FULL
                         : gfx::ColorRange::LIMITED;
  FFMPEG_LOGV(
      "Created plane data, YSize=(%d, %d), CbCrSize=(%d, %d), "
      "CroppedYSize=(%d, %d), CroppedCbCrSize=(%d, %d), ColorDepth=%hhu",
@@ -921,15 +922,8 @@ MediaResult FFmpegVideoDecoder<LIBAV_VER>::DoDecode(
}

gfx::YUVColorSpace FFmpegVideoDecoder<LIBAV_VER>::GetFrameColorSpace() const {
  AVColorSpace colorSpace = AVCOL_SPC_UNSPECIFIED;
#if LIBAVCODEC_VERSION_MAJOR > 58
  colorSpace = mFrame->colorspace;
#else
  if (mLib->av_frame_get_colorspace) {
    colorSpace = (AVColorSpace)mLib->av_frame_get_colorspace(mFrame);
  }
#endif
  switch (colorSpace) {
    switch (mLib->av_frame_get_colorspace(mFrame)) {
#if LIBAVCODEC_VERSION_MAJOR >= 55
      case AVCOL_SPC_BT2020_NCL:
      case AVCOL_SPC_BT2020_CL:
@@ -943,21 +937,10 @@ gfx::YUVColorSpace FFmpegVideoDecoder<LIBAV_VER>::GetFrameColorSpace() const {
      case AVCOL_SPC_RGB:
        return gfx::YUVColorSpace::Identity;
      default:
      return DefaultColorSpace({mFrame->width, mFrame->height});
        break;
    }
  }

gfx::ColorRange FFmpegVideoDecoder<LIBAV_VER>::GetFrameColorRange() const {
  AVColorRange range = AVCOL_RANGE_UNSPECIFIED;
#if LIBAVCODEC_VERSION_MAJOR > 58
  range = mFrame->color_range;
#else
  if (mLib->av_frame_get_color_range) {
    range = (AVColorRange)mLib->av_frame_get_color_range(mFrame);
  }
#endif
  return range == AVCOL_RANGE_JPEG ? gfx::ColorRange::FULL
                                   : gfx::ColorRange::LIMITED;
  return DefaultColorSpace({mFrame->width, mFrame->height});
}

MediaResult FFmpegVideoDecoder<LIBAV_VER>::CreateImage(
@@ -1032,7 +1015,12 @@ MediaResult FFmpegVideoDecoder<LIBAV_VER>::CreateImage(
#endif
  }
  b.mYUVColorSpace = GetFrameColorSpace();
  b.mColorRange = GetFrameColorRange();

  if (mLib->av_frame_get_color_range) {
    auto range = mLib->av_frame_get_color_range(mFrame);
    b.mColorRange = range == AVCOL_RANGE_JPEG ? gfx::ColorRange::FULL
                                              : gfx::ColorRange::LIMITED;
  }

  RefPtr<VideoData> v;
#ifdef CUSTOMIZED_BUFFER_ALLOCATION
@@ -1102,7 +1090,13 @@ MediaResult FFmpegVideoDecoder<LIBAV_VER>::CreateImageVAAPI(
                       RESULT_DETAIL("VAAPI dmabuf allocation error"));
  }
  surface->SetYUVColorSpace(GetFrameColorSpace());
  surface->SetColorRange(GetFrameColorRange());

  if (mLib->av_frame_get_color_range) {
    auto range = mLib->av_frame_get_color_range(mFrame);
    surface->SetColorRange(range == AVCOL_RANGE_JPEG
                               ? gfx::ColorRange::FULL
                               : gfx::ColorRange::LIMITED);
  }

  RefPtr<VideoData> vp = VideoData::CreateFromImage(
      mInfo.mDisplay, aOffset, TimeUnit::FromMicroseconds(aPts),
+0 −1
Original line number Diff line number Diff line
@@ -98,7 +98,6 @@ class FFmpegVideoDecoder<LIBAV_VER>
#endif
  }
  gfx::YUVColorSpace GetFrameColorSpace() const;
  gfx::ColorRange GetFrameColorRange() const;

  MediaResult CreateImage(int64_t aOffset, int64_t aPts, int64_t aDuration,
                          MediaDataDecoder::DecodedData& aResults) const;