Closed Bug 1860899 Opened 11 months ago Closed 10 months ago

Implement FFmpegVideoEncoder based on modern APIs for VPX

Categories

(Core :: Audio/Video, task, P1)

task

Tracking

()

RESOLVED FIXED
122 Branch
Tracking Status
firefox122 --- fixed

People

(Reporter: chunmin, Assigned: chunmin)

References

(Blocks 1 open bug, Regressed 1 open bug)

Details

Attachments

(36 files, 6 obsolete files)

48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review

There is no MediaDataEncoder implementation on Linux right now. To implement WebCodec's video encoder properly, it's best to implement an FFmpegVideoEncoder with a MediaDataEncoder interface

Blocks: 1749047
No longer blocks: VideoDecoder
Depends on: 1860925

Depends on D193602

Depends on D193936

Note that FFmpegEncoderModule won't be built since it's not included in
any moz.build yet. The following patches will add this into related
moz.build to build it.

Depends on D193942

Depends on D193943

Depends on D193944

This patch creates an (blank) ffmpeg video encoder and builds it within
ffvpx and ffmpeg libraries with different versions. This encoder can be
obtained via FFmpegEncoderModule::CreateVideoEncoder

Depends on D193945

Depends on D193946

Depends on D193947

Depends on D193948

In FFmpegEncoderModule::CreateVideoEncoder, we should only create video
encoder when the mime type is supported by the underlying FFmpeg
encoder.

Depends on D193949

Depends on D193950

This patch addes a gfx::gfxVars::Initialize() in PEMFactory, as what
PDMFactory does.

gfx::gfxVars::CanUseHardwareVideoDecoding() will be checked in
FFmpegLibWrapper::LinkVAAPILibs() during FF{VPX,
mpeg}RuntimeLinker::CreateEncoder via ::Init(). This API required to be
called after gfxVars are initialized. PEMFactory ctor seems a good place
to initialize gfx vars.

Depends on D193951

Blocks: 1860925
No longer depends on: 1860925
Depends on: 1864008
Attachment #9364218 - Attachment description: WIP: Bug 1860899 - Add logs to FFmpegVideoEncoder → WIP: Bug 1860899 - Add logs to FFmpegEncoderModule
Attachment #9364207 - Attachment is obsolete: true
Attachment #9364208 - Attachment is obsolete: true
Attachment #9364209 - Attachment is obsolete: true

./mach clang-format --path
dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp

Depends on D193601

Depends on D193601

Depends on D194120

Depends on D193945

Depends on D193945

Attachment #9364785 - Attachment is obsolete: true

This patch implements a function to get AVCodecID by mime type.

This patch partially implements Init() and Shutdown() to allocate and
release the AVCodecContext respectively. These two functions will be
exectued on the platform's encoder task queue specified in the given
CreateEncoderParams. Thus, the allocated AVCodecContext is a task-queue
only member variable.

Depends on D193952

This patch add a VideoConfig member into FFmpegVideoEncoder. Since
VideoConfig is a template, its associated type is introduced into
FFmpegVideoEncoder's template.

Depends on D194580

This patch maps the VideoConfig's member values to AVCodecContext's
member values.

Depends on D194581

avcodec_open2 is not thread-safe until version 60 [1]. Besides, even it
claims to be thread-safe now, data race can appear in situations [2, 3].
To accommodate order FFmpeg versions, opening/closing the AVCodecContext
in a critical section is the simplest way to avoid data race issues.

The following related tests:

  1. MediaDataEncoderTest.VP8Create
  2. MediaDataEncoderTest.VP8Inits
  3. MediaDataEncoderTest.VP9Create
  4. MediaDataEncoderTest.VP9Inits

can be run via below command:

MOZ_LOG="FFmpegVideo:5" /mach gtest <MediaDataEncoderTest 1-4>

[1] https://github.com/FFmpeg/FFmpeg/commit/ebf1d0f4bb7e849a4a4481eeba3a96c1df674308
[2] https://ffmpeg.org/pipermail/ffmpeg-devel/2022-January/290914.html
[3] https://ffmpeg.org/pipermail/ffmpeg-devel/2022-January/thread.html#290914

Depends on D194913

Depends on D194914

Depends on D195056

Attachment #9365282 - Attachment description: WIP: Bug 1860899 - Implement GetFFmpegEncoderCodecId → WIP: Bug 1860899 - Add a function to get AVCodecID by mime type.
Attachment #9366200 - Attachment description: WIP: Bug 1860899 - PrepareFrame → WIP: Bug 1860899 - Add a function to allocate AVFrame for encoding

This patch implement an encoder function based on avcodec_send_frame and
avcodec_receive_packet, which were introduced in FFmpeg 58.

Depends on D195057

Attachment #9366200 - Attachment description: WIP: Bug 1860899 - Add a function to allocate AVFrame for encoding → WIP: Bug 1860899 - Add a function to allocate/free AVFrame
Attachment #9366629 - Attachment description: WIP: Bug 1860899 - Implement encode based on modern APIs → WIP: Bug 1860899 - Implement Encode based on modern APIs

This patch completes the encoding functionality. It implements a
function copying AVPacket's data to a MediaRawData. Accordingly, the
main encode function can return the encoded data properly.

Depends on D195328

Depends on D195377

This patch implements drain function based on avcodec_send_frame and
avcodec_receive_packet, similar to what Encode function did.
Thus, it only works when ffmpeg version is at least 58.

It's worth mentioning that the encoder cannot continue encoding once it
enters draining mode, due to API limitation. Users need to encode data
after draining are encouraged to create a new encoder.

Still, the alternative does exist. If AV_CODEC_CAP_ENCODER_FLUSH is set
in the AVCodec's capabilities of the AVCodecContext, then
avcodec_flush_buffers can be used to flush or drain all the encoded
data without explicitly entering draining mode, instead of sending a
NULL to the avcodec_send_frame. However, since this flag is not set
when using the libvpx encoder (at least on my machine), this approach is
put to the backlog.

With the Drain implementation, the patches so far can be tested with the
additional tests below:

  1. MediaDataEncoderTest.VP8Encodes
  2. MediaDataEncoderTest.VP9Encodes

via the following command:

MOZ_LOG="FFmpegVideo:5" ./mach gtest MediaDataEncoderTest.*

Those tests can check the sanity of Encode() and Drain().

Depends on D195378

This patch re-impelements the av_err2str macro to get the error
message from the error code, since av_strerror needs to be called via
the FFmpegLibWrapper.

Depends on D195379

Since the current Encode API is implemented by the modern APIs
introduced in ffmpeg 58, the encoder functionalities should be limited
by the version accordingly.

Depends on D195380

Since the encode(/decode) APIs were changed in ffmpeg 58, I am going to rename this bug and push the implementation based on the older APIs in another bug.

Summary: Implement FFmpegVideoEncoder → Implement FFmpegVideoEncoder based on modern APIs
No longer blocks: 1749047, 1860925, FFmpegVideoEncoder
Blocks: 1868253
Attachment #9364556 - Attachment description: WIP: Bug 1860899 - Alphabetize avcodec.symbols → Bug 1860899 - Alphabetize avcodec.symbols
Attachment #9364557 - Attachment description: WIP: Bug 1860899 - Expose encoder-related APIs from ffvpx/libavcodec → Bug 1860899 - Expose encoder-related APIs from ffvpx/libavcodec
Attachment #9364547 - Attachment description: WIP: Bug 1860899 - clang-format FFmpegLibWrapper.cpp → Bug 1860899 - clang-format FFmpegLibWrapper.cpp
Attachment #9364558 - Attachment description: WIP: Bug 1860899 - Add more logs in FFmpegLibWrapper → Bug 1860899 - Add more logs in FFmpegLibWrapper
Attachment #9364312 - Attachment description: WIP: Bug 1860899 - Add encoder-related APIs into FFmpegLibWrapper → Bug 1860899 - Add encoder-related APIs into FFmpegLibWrapper
Attachment #9364210 - Attachment description: WIP: Bug 1860899 - Rename FFVPXRuntimeLinker::Create to ::CreateDecoder → Bug 1860899 - Rename FFVPXRuntimeLinker::Create to ::CreateDecoder
Attachment #9364211 - Attachment description: WIP: Bug 1860899 - Rename FFmpegRuntimeLinker::Create to ::CreateDecoder → Bug 1860899 - Rename FFmpegRuntimeLinker::Create to ::CreateDecoder
Attachment #9364212 - Attachment description: WIP: Bug 1860899 - Create and bring FFVPXRuntimeLinker::CreateEncoder to PEMFactory → Bug 1860899 - Create and bring FFVPXRuntimeLinker::CreateEncoder to PEMFactory
Attachment #9364213 - Attachment description: WIP: Bug 1860899 - Create and bring FFmpegRuntimeLinker::CreateEncoder to PEMFactory → Bug 1860899 - Create and bring FFmpegRuntimeLinker::CreateEncoder to PEMFactory
Attachment #9364214 - Attachment description: WIP: Bug 1860899 - Create a FFmpegEncoderModule → Bug 1860899 - Create a FFmpegEncoderModule
Attachment #9364215 - Attachment description: WIP: Bug 1860899 - Get FFmpegEncoderModule via FFVPXRuntimeLinker → Bug 1860899 - Get FFmpegEncoderModule via FFVPXRuntimeLinker
Attachment #9364216 - Attachment description: WIP: Bug 1860899 - Get FFmpegEncoderModule via FFmpegRuntimeLinker → Bug 1860899 - Get FFmpegEncoderModule via FFmpegRuntimeLinker
Attachment #9364789 - Attachment description: WIP: Bug 1860899 - Logging FFmpegLibWrapper link results → Bug 1860899 - Logging FFmpegLibWrapper link results
Attachment #9364217 - Attachment description: WIP: Bug 1860899 - Create a FFmpegVideoEncoder → Bug 1860899 - Create a FFmpegVideoEncoder
Attachment #9364218 - Attachment description: WIP: Bug 1860899 - Add logs to FFmpegEncoderModule → Bug 1860899 - Add logs to FFmpegEncoderModule
Attachment #9364219 - Attachment description: WIP: Bug 1860899 - Implement FFmpegVideoEncoder::GetDescriptionName → Bug 1860899 - Implement FFmpegVideoEncoder::GetDescriptionName
Attachment #9365282 - Attachment description: WIP: Bug 1860899 - Add a function to get AVCodecID by mime type. → Bug 1860899 - Add a function to get AVCodecID by mime type.
Attachment #9364220 - Attachment description: WIP: Bug 1860899 - Implement FFmpegEncoderModule::SupportsMimeType → Bug 1860899 - Implement FFmpegEncoderModule::SupportsMimeType
Attachment #9364221 - Attachment description: WIP: Bug 1860899 - Create video encoder only if type is supported → Bug 1860899 - Create video encoder only if type is supported
Attachment #9364222 - Attachment description: WIP: Bug 1860899 - Add logs to FFmpegVideoEncoder → Bug 1860899 - Add logs to FFmpegVideoEncoder
Attachment #9364223 - Attachment description: WIP: Bug 1860899 - Init gfxVars in PEMFactory ctor → Bug 1860899 - Init gfxVars in PEMFactory ctor
Attachment #9365283 - Attachment description: WIP: Bug 1860899 - Allocate/Free AVCodecContext in Init()/Shutdown() → Bug 1860899 - Allocate/Free AVCodecContext in Init()/Shutdown()
Attachment #9365284 - Attachment description: WIP: Bug 1860899 - Bring template-typed config in FFmpegVideoEncoder → Bug 1860899 - Bring template-typed config in FFmpegVideoEncoder
Attachment #9365907 - Attachment description: WIP: Bug 1860899 - Add conversions from encoder's pixel format to avcodec's pixel format → Bug 1860899 - Add conversions from encoder's pixel format to avcodec's pixel format
Attachment #9365908 - Attachment description: WIP: Bug 1860899 - Set AVCodecContext by VideoConfig values → Bug 1860899 - Set AVCodecContext by VideoConfig values
Attachment #9365909 - Attachment description: WIP: Bug 1860899 - Open/Close AVCodecContext in Init()/Shutdown() → Bug 1860899 - Open/Close AVCodecContext in Init()/Shutdown()
Attachment #9366199 - Attachment description: WIP: Bug 1860899 - Add a blank ProcessEncode → Bug 1860899 - Add a blank ProcessEncode
Attachment #9366200 - Attachment description: WIP: Bug 1860899 - Add a function to allocate/free AVFrame → Bug 1860899 - Add a function to allocate/free AVFrame
Attachment #9366629 - Attachment description: WIP: Bug 1860899 - Implement Encode based on modern APIs → Bug 1860899 - Implement Encode based on modern APIs
Attachment #9366743 - Attachment description: WIP: Bug 1860899 - Implement AVPacket-to-MediaRawData conversion → Bug 1860899 - Implement AVPacket-to-MediaRawData conversion
Attachment #9366744 - Attachment description: WIP: Bug 1860899 - Add a blank ProcessDrain → Bug 1860899 - Add a blank ProcessDrain
Attachment #9366745 - Attachment description: WIP: Bug 1860899 - Implement Drain based on modern APIs → Bug 1860899 - Implement Drain based on modern APIs
Attachment #9366746 - Attachment description: WIP: Bug 1860899 - Add a function to get error message → Bug 1860899 - Add a function to get error message
Attachment #9366747 - Attachment description: WIP: Bug 1860899 - Allow encoder only when ffmpeg >= 58 → Bug 1860899 - Allow encoder only when ffmpeg >= 58
Blocks: 1868402

The current implementation is only for libvpx, so I am going to reflect this on the bug. Other format support will be tracked in bug 1868402

No longer blocks: FFmpegVideoEncoder, 1868253, 1868402
Summary: Implement FFmpegVideoEncoder based on modern APIs → Implement FFmpegVideoEncoder based on modern APIs for libvpx
Blocks: 1868402
Blocks: 1868403
Summary: Implement FFmpegVideoEncoder based on modern APIs for libvpx → Implement FFmpegVideoEncoder based on modern APIs for VPX
Blocks: 1868404

This patch enables the encoding of RGB-type images.

Depends on D195328

Attachment #9367197 - Attachment description: Bug 1860899 - Handle RGB-type images in encode → Bug 1860899 - Handle RGB-type images in Encode

This patch allows linking FFVPX library on any thread.

Depends on D195381

This patch creates a media.ffmpeg.encoder.enabled pref for enabling
FFmpegVideoEncoder. As a result, it won't be activated in the webrtc
case.

Depends on D195739

Blocks: 1868906
Blocks: 1868907
Attachment #9364547 - Attachment is obsolete: true
Pushed by cchang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/f80b95e89dc3 Alphabetize avcodec.symbols r=padenot https://hg.mozilla.org/integration/autoland/rev/87a375e3cf8b Expose encoder-related APIs from ffvpx/libavcodec r=padenot https://hg.mozilla.org/integration/autoland/rev/f373dc87bf48 Add more logs in FFmpegLibWrapper r=media-playback-reviewers,alwu https://hg.mozilla.org/integration/autoland/rev/7acf94ed98f4 Add encoder-related APIs into FFmpegLibWrapper r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/effde2256c28 Rename FFVPXRuntimeLinker::Create to ::CreateDecoder r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/b3160edece06 Rename FFmpegRuntimeLinker::Create to ::CreateDecoder r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/86138ee1179f Create and bring FFVPXRuntimeLinker::CreateEncoder to PEMFactory r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/fa0141a69328 Create and bring FFmpegRuntimeLinker::CreateEncoder to PEMFactory r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/64a46c99eaec Create a FFmpegEncoderModule r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/c96b85ca5f90 Get FFmpegEncoderModule via FFVPXRuntimeLinker r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/fa0d4633cbc9 Get FFmpegEncoderModule via FFmpegRuntimeLinker r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/5be4e6ab78f1 Logging FFmpegLibWrapper link results r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/c93459f6cdbe Create a FFmpegVideoEncoder r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/1c5001fba1a9 Add logs to FFmpegEncoderModule r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/dcc0d26d1be0 Implement FFmpegVideoEncoder::GetDescriptionName r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/b831b0a96d8f Add a function to get AVCodecID by mime type. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/e4fc220d0923 Implement FFmpegEncoderModule::SupportsMimeType r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/7b938872c0d0 Create video encoder only if type is supported r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/01e99865ca02 Add logs to FFmpegVideoEncoder r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/774a4e3053b3 Init gfxVars in PEMFactory ctor r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/3eb4213f5e34 Allocate/Free AVCodecContext in Init()/Shutdown() r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/ccbb7e5e48ae Bring template-typed config in FFmpegVideoEncoder r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/2628ce993127 Add conversions from encoder's pixel format to avcodec's pixel format r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/377ff93825e3 Set AVCodecContext by VideoConfig values r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/012bcf903fa8 Open/Close AVCodecContext in Init()/Shutdown() r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/5ef06b306a36 Add a blank ProcessEncode r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/9095886717c2 Add a function to allocate/free AVFrame r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/5b152c42a6a7 Implement Encode based on modern APIs r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/901e3b9a8e11 Handle RGB-type images in Encode r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/f44e4a298b94 Implement AVPacket-to-MediaRawData conversion r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/0b7884423c94 Add a blank ProcessDrain r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/153024a89a78 Implement Drain based on modern APIs r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/514a900b5ef2 Add a function to get error message r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/fa5a88486f5a Allow encoder only when ffmpeg >= 58 r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/f24499e2e7af Init FFVPX lib on any thread r=media-playback-reviewers,karlt,padenot https://hg.mozilla.org/integration/autoland/rev/935b39fd15fd Activate FFmpegVideoEncoder only if its preference is set r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/dad6d260d8b9 apply code formatting via Lando

https://hg.mozilla.org/mozilla-central/rev/f80b95e89dc3
https://hg.mozilla.org/mozilla-central/rev/87a375e3cf8b
https://hg.mozilla.org/mozilla-central/rev/f373dc87bf48
https://hg.mozilla.org/mozilla-central/rev/7acf94ed98f4
https://hg.mozilla.org/mozilla-central/rev/effde2256c28
https://hg.mozilla.org/mozilla-central/rev/b3160edece06
https://hg.mozilla.org/mozilla-central/rev/86138ee1179f
https://hg.mozilla.org/mozilla-central/rev/fa0141a69328
https://hg.mozilla.org/mozilla-central/rev/64a46c99eaec
https://hg.mozilla.org/mozilla-central/rev/c96b85ca5f90
https://hg.mozilla.org/mozilla-central/rev/fa0d4633cbc9
https://hg.mozilla.org/mozilla-central/rev/5be4e6ab78f1
https://hg.mozilla.org/mozilla-central/rev/c93459f6cdbe
https://hg.mozilla.org/mozilla-central/rev/1c5001fba1a9
https://hg.mozilla.org/mozilla-central/rev/dcc0d26d1be0
https://hg.mozilla.org/mozilla-central/rev/b831b0a96d8f
https://hg.mozilla.org/mozilla-central/rev/e4fc220d0923
https://hg.mozilla.org/mozilla-central/rev/7b938872c0d0
https://hg.mozilla.org/mozilla-central/rev/01e99865ca02
https://hg.mozilla.org/mozilla-central/rev/774a4e3053b3
https://hg.mozilla.org/mozilla-central/rev/3eb4213f5e34
https://hg.mozilla.org/mozilla-central/rev/ccbb7e5e48ae
https://hg.mozilla.org/mozilla-central/rev/2628ce993127
https://hg.mozilla.org/mozilla-central/rev/377ff93825e3
https://hg.mozilla.org/mozilla-central/rev/012bcf903fa8
https://hg.mozilla.org/mozilla-central/rev/5ef06b306a36
https://hg.mozilla.org/mozilla-central/rev/9095886717c2
https://hg.mozilla.org/mozilla-central/rev/5b152c42a6a7
https://hg.mozilla.org/mozilla-central/rev/901e3b9a8e11
https://hg.mozilla.org/mozilla-central/rev/f44e4a298b94
https://hg.mozilla.org/mozilla-central/rev/0b7884423c94
https://hg.mozilla.org/mozilla-central/rev/153024a89a78
https://hg.mozilla.org/mozilla-central/rev/514a900b5ef2
https://hg.mozilla.org/mozilla-central/rev/fa5a88486f5a
https://hg.mozilla.org/mozilla-central/rev/f24499e2e7af
https://hg.mozilla.org/mozilla-central/rev/935b39fd15fd
https://hg.mozilla.org/mozilla-central/rev/dad6d260d8b9

Status: NEW → RESOLVED
Closed: 10 months ago
Resolution: --- → FIXED
Target Milestone: --- → 122 Branch

Comment on attachment 9367506 [details]
Bug 1860899 - Update the new ffmpeg PEM with the new PEM interface. r?chunmin

Revision D195805 was moved to bug 1867542. Setting attachment 9367506 [details] to obsolete.

Attachment #9367506 - Attachment is obsolete: true
Regressions: 1869076
Regressions: 1870074
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: