Fixed
Status Update
Comments
ph...@chromium.org <ph...@chromium.org> #2
[Empty comment from Monorail migration]
[Monorail components: -Platform>DevTools Blink>CSS]
[Monorail components: -Platform>DevTools Blink>CSS]
pe...@chromium.org <pe...@chromium.org> #3
Tested the issue on reported chrome version #87.0.4280.00 using Mac 10.13.6 as per the steps in https://crbug.com/chromium/1159587#c0
Steps:
---------
1. Launched chrome and opened devtools
2. Observed that able to add position and top rules.
Attached screen-cast for reference.
@Reporter: Could you please review the attached screen-cast and let us know if we missed anything from our end.
Requesting you to provide a sample URL/file that reproduce the issue, so that it would be really helpful in triaging the issue.
Thanks
Steps:
---------
1. Launched chrome and opened devtools
2. Observed that able to add position and top rules.
Attached screen-cast for reference.
@Reporter: Could you please review the attached screen-cast and let us know if we missed anything from our end.
Requesting you to provide a sample URL/file that reproduce the issue, so that it would be really helpful in triaging the issue.
Thanks
si...@zappar.com <si...@zappar.com> #4
Hi, no disrespect, but please forward this to developer who knows CSS and HTML. I have explained the issue perfectly.
da...@chromium.org <da...@chromium.org> #5
Thank you for providing more feedback. Adding the requester to the cc list.
For more details visithttps://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
For more details visit
si...@zappar.com <si...@zappar.com> #6
[Empty comment from Monorail migration]
[Monorail components: -Blink>CSS Platform>DevTools>Authoring]
[Monorail components: -Blink>CSS Platform>DevTools>Authoring]
re...@fresh-byte.de <re...@fresh-byte.de> #7
As per https://crbug.com/chromium/1159587#c0 , it seems to be a feature request hence marking it 'Untriaged' and requesting someone from Dev to look into it.
Thanks.!
Thanks.!
gu...@gmail.com <gu...@gmail.com> #8
This is something we’ve been thinking about. We do want to make DevTools more helpful w.r.t. “inactive” styles, i.e. declarations that are covered but still don’t have any effect due to other declarations or rules — like `left: 42px` on a statically positioned element.
si...@zappar.com <si...@zappar.com> #9
Making this issue about the originally reported behavior, and filing https://bugs.chromium.org/p/chromium/issues/detail?id=1178508 to track further improvements to “inactive” styles.
mo...@microsoft-edge-infrastructure.iam.gserviceaccount.com <mo...@microsoft-edge-infrastructure.iam.gserviceaccount.com> #10
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.
Sorry for the inconvenience if the bug really should have been left as Available.
For more details visithttps://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Sorry for the inconvenience if the bug really should have been left as Available.
For more details visit
[Deleted User] <[Deleted User]> #11
[Empty comment from Monorail migration]
au...@microsoft.com <au...@microsoft.com> #12
[Empty comment from Monorail migration]
ma...@chromium.org <ma...@chromium.org> #13
This issue was migrated from crbug.com/chromium/1159587?no_tracker_redirect=1
[Monorail components added to Component Tags custom field.]
[Monorail components added to Component Tags custom field.]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #14
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/cbe1567c04cbac7cc8ebdd6b9d05603599f473fa
commit cbe1567c04cbac7cc8ebdd6b9d05603599f473fa
Author: Austin Orion <auorion@microsoft.com>
Date: Tue Mar 08 03:51:01 2022
Add MF AAC Encoder.
This CL introduces MFAudioEncoder which uses the Windows Media
Foundation's AAC encoder.
https://docs.microsoft.com/en-us/windows/win32/medfound/aac-encoder
The MF AAC encoder was designed to encode files, where all the data
is available at the start, and so the API is not perfectly suited
for stream encoding. Specifically, there is no callback or event
to let us know when output data is ready, or when it is ready for more
input.
We make this work with a state machine that is described by this
diagram:
https://mermaid.live/view/#pako:eNqFVNtu2kAQ_ZXpPkRGCn7gkbZIaXGkqJWSBt66lbXYA1jYa3cvrZDNv3cv1Dcc5Ynd2Tkz55wZXJOkTJEsyUGw6gjbNeUA3_GAPP1JiT8sP-3Eal0qhSnkGUcJTCC8lFJtmTxJSn5Z0FeW5yhgPl_BY67lcRSLuG300UbdM8zD-aqRiimEz3BysYwfGtiK84soE5TyWatKK4vwYAcx598aNT7x9q27206Nu8ZhZQo2sLEN6pqSbA_XZqbbU5ojJZeLxbsMB9yzXGIDr6i04EFASQe4MjIEwZoBwV90JrBcIEvPIDTn5nFGyWzWK2olKqGxr6olPgo5Cq0fXcMGHpIEK2WOdf3hKg6LSp3h7s6zQWePiMM201X0-tpYX2PES304ftH7PQpM61qyospRxhmPr8VgBUXGp0p4QWM1N1I28fO3HvfJnEiIUhg29icIWvHu7o0cEp12tL8nw-xOsJ14r4O9-gbjMm5Z_fHhD8tytsvN_rQOj168P6Ngv-8PO6_ITquu-7N7Gziwt5N2Q3Jg3mLavVuQnYpfmtIF42QXh6-aN2MuFt6R7zEberx4b3f6NcLOl4n_w6jweHqLyfHdgN5eEHJPChQFy1LzuastmBJ1xMJ8CZbmmDJxooTyi8nTVWo6RWmmSkGWttw9YVqVmzNP_t99zjpj5stZ-ODlH1c0454
Basically the process is as follows:
1. If we have input in our queue, give it to the encoder until we run
out or the encoder rejects it (because it is full)
2. Check the encoder for output until it stops producing
3. If, by our count, the encoder could produce more data, check again
4. If we have more input in the queue, by now, go back to 1
Each transition (e.g. from step 1 to step 2) is accomplished by
posting a task to a SequencedTaskRunner. This ensures that we can
safely access our mutable members (like the queue) without issue,
and we yield the thread frequently so we don't block for extended
periods of time.
This class will be used by MojoAudioEncoder to enable encoding to be
done in the GPU process when using WebCodecs and other consumers. See
these other related CLs:
3243816: webcodecs: Mojo interface, service and client for AudioEncoder |https://chromium-review.googlesource.com/c/chromium/src/+/3243816
3308655: webcodecs: Binding for Mojo Audio Encoder |https://chromium-review.googlesource.com/c/chromium/src/+/3308655
Bug: 1072056
Change-Id: I89b6a21407e5d7ff24a09569b34ffbdd8073ad67
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/3293969
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Eugene Zemtsov <eugene@chromium.org>
Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
Cr-Commit-Position: refs/heads/main@{#978595}
[modify]https://crrev.com/cbe1567c04cbac7cc8ebdd6b9d05603599f473fa/media/audio/BUILD.gn
[add]https://crrev.com/cbe1567c04cbac7cc8ebdd6b9d05603599f473fa/media/gpu/windows/mf_audio_encoder.h
[modify]https://crrev.com/cbe1567c04cbac7cc8ebdd6b9d05603599f473fa/media/audio/audio_encoders_unittest.cc
[modify]https://crrev.com/cbe1567c04cbac7cc8ebdd6b9d05603599f473fa/media/audio/audio_opus_encoder.cc
[modify]https://crrev.com/cbe1567c04cbac7cc8ebdd6b9d05603599f473fa/media/gpu/BUILD.gn
[add]https://crrev.com/cbe1567c04cbac7cc8ebdd6b9d05603599f473fa/media/gpu/windows/mf_audio_encoder.cc
commit cbe1567c04cbac7cc8ebdd6b9d05603599f473fa
Author: Austin Orion <auorion@microsoft.com>
Date: Tue Mar 08 03:51:01 2022
Add MF AAC Encoder.
This CL introduces MFAudioEncoder which uses the Windows Media
Foundation's AAC encoder.
The MF AAC encoder was designed to encode files, where all the data
is available at the start, and so the API is not perfectly suited
for stream encoding. Specifically, there is no callback or event
to let us know when output data is ready, or when it is ready for more
input.
We make this work with a state machine that is described by this
diagram:
Basically the process is as follows:
1. If we have input in our queue, give it to the encoder until we run
out or the encoder rejects it (because it is full)
2. Check the encoder for output until it stops producing
3. If, by our count, the encoder could produce more data, check again
4. If we have more input in the queue, by now, go back to 1
Each transition (e.g. from step 1 to step 2) is accomplished by
posting a task to a SequencedTaskRunner. This ensures that we can
safely access our mutable members (like the queue) without issue,
and we yield the thread frequently so we don't block for extended
periods of time.
This class will be used by MojoAudioEncoder to enable encoding to be
done in the GPU process when using WebCodecs and other consumers. See
these other related CLs:
3243816: webcodecs: Mojo interface, service and client for AudioEncoder |
3308655: webcodecs: Binding for Mojo Audio Encoder |
Bug: 1072056
Change-Id: I89b6a21407e5d7ff24a09569b34ffbdd8073ad67
Reviewed-on:
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Eugene Zemtsov <eugene@chromium.org>
Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
Cr-Commit-Position: refs/heads/main@{#978595}
[modify]
[add]
[modify]
[modify]
[modify]
[add]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #15
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/9e9c16cdf1c60c9dece13d34e9492ff03db242bd
commit 9e9c16cdf1c60c9dece13d34e9492ff03db242bd
Author: Eugene Zemtsov <eugene@chromium.org>
Date: Wed Mar 09 03:40:08 2022
webcodecs: Connecting wires for AAC audio encoder on Windows
Test:https://wc-audio-gen.glitch.me/
No webtests yet, the feature is still behind the flag
Bug: 1072056
Change-Id: Ic2dafb46fcb43536bbfaeada87df665fb4743709
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/3511350
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
Cr-Commit-Position: refs/heads/main@{#979067}
[modify]https://crrev.com/9e9c16cdf1c60c9dece13d34e9492ff03db242bd/media/mojo/services/gpu_mojo_media_client.cc
[modify]https://crrev.com/9e9c16cdf1c60c9dece13d34e9492ff03db242bd/third_party/blink/renderer/modules/webcodecs/audio_encoder.cc
[modify]https://crrev.com/9e9c16cdf1c60c9dece13d34e9492ff03db242bd/media/gpu/windows/mf_audio_encoder.cc
commit 9e9c16cdf1c60c9dece13d34e9492ff03db242bd
Author: Eugene Zemtsov <eugene@chromium.org>
Date: Wed Mar 09 03:40:08 2022
webcodecs: Connecting wires for AAC audio encoder on Windows
Test:
No webtests yet, the feature is still behind the flag
Bug: 1072056
Change-Id: Ic2dafb46fcb43536bbfaeada87df665fb4743709
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
Cr-Commit-Position: refs/heads/main@{#979067}
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #16
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/4795541534a43993643d008ce3643ccd4f0fa62d
commit 4795541534a43993643d008ce3643ccd4f0fa62d
Author: Austin Orion <auorion@microsoft.com>
Date: Fri Apr 01 23:24:16 2022
Fix issue in MFAudioEncoder when receiving many small inputs.
When the MFAudioEncder receives many inputs that are smaller than
`kSamplesPerFrame` (1024), the `mf_encoder_`'s internal input buffer
will fill up and it will reject input before we have provided
`kMinSamplesForOutput`. This leads to us never calling `ProcessOutput`
and we will not produce any output.
The solution is to always call `TryProcessOutput` when the encoder
returns `MF_E_NOTACCEPTING`, which will transfer data from the
`mf_encoder_`'s input buffer into a staging buffer. `ProcessOutput`
will return `MF_E_TRANSFORM_NEED_MORE_INPUT` at this point, but we can
now provide more input without getting `MF_E_NOTACCEPTING`.
I also took this opportunity to fix a few other issues:
https://crbug.com/chromium/2 :
It turns out that the minimum number of frames to produce output
depends on if we are flushing or not. This causes unnecessary calls to
`TryProcessOutput` and an infinite loop if we have between
2048 and 3076 samples.
The solution is to add `kMinSamplesForFlush` and increase the value of
`kMinSamplesForOutput`.
https://crbug.com/chromium/3 :
If `Encode` is called synchronously (e.g. in a loop for testing), we
will not be able to do any work because our posted tasks won't run, and
`EnqueueInput` will see our `state_` is already `kProcessing` so it
won't call `TryProcessInput`.
The solution here is to set our `state_` to `kIdle` whenever we post a
task so repeated synchronous calls can still encode the input.
https://crbug.com/chromium/4 :
A side effect of the solution to #2 is that we will end up with many
posted tasks to `TryProcessInput` and `TryProcessOutput` that don't
need to run.
The solution here is to add bool members `have_queued_input_task_`
and `have_queued_output_task_` so we only post one at a time.
Bug: 1072056
Change-Id: Ie11bf0124f779b12d5f36a1be0a3e950876e10d5
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/3544310
Reviewed-by: Eugene Zemtsov <eugene@chromium.org>
Commit-Queue: Austin Orion <auorion@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#988171}
[modify]https://crrev.com/4795541534a43993643d008ce3643ccd4f0fa62d/media/base/audio_timestamp_helper.h
[modify]https://crrev.com/4795541534a43993643d008ce3643ccd4f0fa62d/media/gpu/windows/mf_audio_encoder.h
[modify]https://crrev.com/4795541534a43993643d008ce3643ccd4f0fa62d/media/audio/audio_encoders_unittest.cc
[modify]https://crrev.com/4795541534a43993643d008ce3643ccd4f0fa62d/media/gpu/windows/mf_audio_encoder.cc
commit 4795541534a43993643d008ce3643ccd4f0fa62d
Author: Austin Orion <auorion@microsoft.com>
Date: Fri Apr 01 23:24:16 2022
Fix issue in MFAudioEncoder when receiving many small inputs.
When the MFAudioEncder receives many inputs that are smaller than
`kSamplesPerFrame` (1024), the `mf_encoder_`'s internal input buffer
will fill up and it will reject input before we have provided
`kMinSamplesForOutput`. This leads to us never calling `ProcessOutput`
and we will not produce any output.
The solution is to always call `TryProcessOutput` when the encoder
returns `MF_E_NOTACCEPTING`, which will transfer data from the
`mf_encoder_`'s input buffer into a staging buffer. `ProcessOutput`
will return `MF_E_TRANSFORM_NEED_MORE_INPUT` at this point, but we can
now provide more input without getting `MF_E_NOTACCEPTING`.
I also took this opportunity to fix a few other issues:
It turns out that the minimum number of frames to produce output
depends on if we are flushing or not. This causes unnecessary calls to
`TryProcessOutput` and an infinite loop if we have between
2048 and 3076 samples.
The solution is to add `kMinSamplesForFlush` and increase the value of
`kMinSamplesForOutput`.
If `Encode` is called synchronously (e.g. in a loop for testing), we
will not be able to do any work because our posted tasks won't run, and
`EnqueueInput` will see our `state_` is already `kProcessing` so it
won't call `TryProcessInput`.
The solution here is to set our `state_` to `kIdle` whenever we post a
task so repeated synchronous calls can still encode the input.
A side effect of the solution to #2 is that we will end up with many
posted tasks to `TryProcessInput` and `TryProcessOutput` that don't
need to run.
The solution here is to add bool members `have_queued_input_task_`
and `have_queued_output_task_` so we only post one at a time.
Bug: 1072056
Change-Id: Ie11bf0124f779b12d5f36a1be0a3e950876e10d5
Reviewed-on:
Reviewed-by: Eugene Zemtsov <eugene@chromium.org>
Commit-Queue: Austin Orion <auorion@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#988171}
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #17
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/f286102b8108e5b0d507f75ac04382920231dc58
commit f286102b8108e5b0d507f75ac04382920231dc58
Author: Takashi Sakamoto <tasak@google.com>
Date: Mon Apr 04 04:42:14 2022
Revert "Fix issue in MFAudioEncoder when receiving many small inputs."
This reverts commit 4795541534a43993643d008ce3643ccd4f0fa62d.
Reason for revert: susepct causing media_unittests failures on win-asan.
media_unittests failed because of:
AAC/MFAudioEncoderTest.FullCycleEncodeDecode/3
AAC/MFAudioEncoderTest.FullCycleEncodeDecode/0
AAC/MFAudioEncoderTest.FullCycleEncodeDecode/1
AAC/MFAudioEncoderTest.FullCycleEncodeDecode/4
...2 more failure(s) (6 total)...
First build failure:https://ci.chromium.org/ui/p/chromium/builders/ci/win-asan/21551/overview
Original change's description:
commit f286102b8108e5b0d507f75ac04382920231dc58
Author: Takashi Sakamoto <tasak@google.com>
Date: Mon Apr 04 04:42:14 2022
Revert "Fix issue in MFAudioEncoder when receiving many small inputs."
This reverts commit 4795541534a43993643d008ce3643ccd4f0fa62d.
Reason for revert: susepct causing media_unittests failures on win-asan.
media_unittests failed because of:
AAC/MFAudioEncoderTest.FullCycleEncodeDecode/3
AAC/MFAudioEncoderTest.FullCycleEncodeDecode/0
AAC/MFAudioEncoderTest.FullCycleEncodeDecode/1
AAC/MFAudioEncoderTest.FullCycleEncodeDecode/4
...2 more failure(s) (6 total)...
First build failure:
Original change's description:
Bug: 1072056
Change-Id: I1ba044cd31e655c5e0411200ccdc7b3f541c26b2
Reviewed-on:
Owners-Override: Takashi Sakamoto <tasak@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Takashi Sakamoto <tasak@google.com>
Cr-Commit-Position: refs/heads/main@{#988376}
[modify]
[modify]
[modify]
[modify]
si...@zappar.com <si...@zappar.com> #18
I'm seeing the commits from Microsoft referencing this bug, but not sure I've seen a description of what they are aiming to achieve - it looks to be a windows-specific binding for audio encoding?
To my mind, this bug is more about the video/mp4 container format than it is about audio encoding. For my use case, I'd also be looking to encode video/mp4 content on Android, so ideally there would be a cross-platform solution for that part.
Could someone involved with the recent commits discuss their overall goals here, or link to somewhere that has been discussed already?
To my mind, this bug is more about the video/mp4 container format than it is about audio encoding. For my use case, I'd also be looking to encode video/mp4 content on Android, so ideally there would be a cross-platform solution for that part.
Could someone involved with the recent commits discuss their overall goals here, or link to somewhere that has been discussed already?
au...@microsoft.com <au...@microsoft.com> #19
You're right that the original bug is only for the video/mp4 mime type, but we'd also like to support audio in the recorded files. We probably could have used another bug, or at least mentioned the plan here.
The context is that the MP4 container can only hold audio encoded via AAC, and the only available audio encoders currently are Opus and Vorbis. Once we can produce AAC encoded audio (we can already produce h.264 encoded video), we will need to add an MP4 muxer, then we will be able to produce MP4 files and update MediaRecorder to accept the "video/mp4; mp4a.40.2" mime type and produce MP4 files with audio and video.
Opportunistically, we're also adding AAC audio encoding support to the WebCodecs API.
I can only commit to adding AAC encoding support on Windows currently, but Google has said that they are willing to add the encoder to other platforms.
The muxer will ideally be cross platform, so at least video should work everywhere, even if AAC isn't supported, but we're investigating potential issues with patents.
The context is that the MP4 container can only hold audio encoded via AAC, and the only available audio encoders currently are Opus and Vorbis. Once we can produce AAC encoded audio (we can already produce h.264 encoded video), we will need to add an MP4 muxer, then we will be able to produce MP4 files and update MediaRecorder to accept the "video/mp4; mp4a.40.2" mime type and produce MP4 files with audio and video.
Opportunistically, we're also adding AAC audio encoding support to the WebCodecs API.
I can only commit to adding AAC encoding support on Windows currently, but Google has said that they are willing to add the encoder to other platforms.
The muxer will ideally be cross platform, so at least video should work everywhere, even if AAC isn't supported, but we're investigating potential issues with patents.
au...@microsoft.com <au...@microsoft.com> #20
[Empty comment from Monorail migration]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #21
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/928e86d0d51dab7b2967ff96f13fd55c1660811a
commit 928e86d0d51dab7b2967ff96f13fd55c1660811a
Author: Austin Orion <auorion@microsoft.com>
Date: Mon Oct 03 22:19:19 2022
Add AudioTrackMojoEncoder to MediaRecorder.
Add an implementation of `AudioTrackEncoder` to encode audio data
using the platform encoder implementations. Currently, only AAC
encoding is supported and only on Windows and Mac.
It connects to a `media::AudioEncoder` implementation found in media/gpu/<platform> via a `MojoAudioEncoder`. These platform encoders will run in the GPU process. This is similar to how WebCodecs encode AAC audio data [1].
Due to the asynchronous nature of `MojoAudioEncoder`, this track encoder may buffer some inputs during encoder initialization. Outputs are also delivered asynchronously, compared to the existing Opus and PCM encoders which invoke the output callback synchronously from within `EncodeAudio`.
This change does not enable AAC audio encoding via MediaRecorder. We will need to add a passthrough muxer, as the WebmMuxer does not support AAC audio data. We will also need to update MediaRecorderHandler to indicate support for the audio/aac mimetype.
LOW_COVERAGE_REASON=Most of the uncovered code is simply logging.
[1]https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/webcodecs/audio_encoder.cc?q=webcodecs%20aac
Bug: 1072056
Change-Id: Ie4a82f00b7a8776fa70927df9352cfa12747c709
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/3739403
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Austin Orion <auorion@microsoft.com>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/main@{#1054369}
[add]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/audio_track_mojo_encoder.h
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/media/mojo/clients/BUILD.gn
[add]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/audio_track_mojo_encoder.cc
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/audio_track_pcm_encoder.h
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/BUILD.gn
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/media/gpu/BUILD.gn
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder_unittest.cc
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/audio_track_encoder.h
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder.cc
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder.h
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.h
[modify]https://crrev.com/928e86d0d51dab7b2967ff96f13fd55c1660811a/third_party/blink/renderer/modules/BUILD.gn
commit 928e86d0d51dab7b2967ff96f13fd55c1660811a
Author: Austin Orion <auorion@microsoft.com>
Date: Mon Oct 03 22:19:19 2022
Add AudioTrackMojoEncoder to MediaRecorder.
Add an implementation of `AudioTrackEncoder` to encode audio data
using the platform encoder implementations. Currently, only AAC
encoding is supported and only on Windows and Mac.
It connects to a `media::AudioEncoder` implementation found in media/gpu/<platform> via a `MojoAudioEncoder`. These platform encoders will run in the GPU process. This is similar to how WebCodecs encode AAC audio data [1].
Due to the asynchronous nature of `MojoAudioEncoder`, this track encoder may buffer some inputs during encoder initialization. Outputs are also delivered asynchronously, compared to the existing Opus and PCM encoders which invoke the output callback synchronously from within `EncodeAudio`.
This change does not enable AAC audio encoding via MediaRecorder. We will need to add a passthrough muxer, as the WebmMuxer does not support AAC audio data. We will also need to update MediaRecorderHandler to indicate support for the audio/aac mimetype.
LOW_COVERAGE_REASON=Most of the uncovered code is simply logging.
[1]
Bug: 1072056
Change-Id: Ie4a82f00b7a8776fa70927df9352cfa12747c709
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Austin Orion <auorion@microsoft.com>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/main@{#1054369}
[add]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #22
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/0454d858a77e0d91f87c1cebae4a2095e8b7fb49
commit 0454d858a77e0d91f87c1cebae4a2095e8b7fb49
Author: Austin Orion <auorion@microsoft.com>
Date: Thu Dec 01 02:34:16 2022
Refactor WebmMuxer into a Muxer interface and implementation.
This change introduces the Muxer interface and refactors the WebmMuxer
to be an implementation of this interface. This creates room for future
implementations that support new containers, such as an Mp4Muxer.
More details about future plans can be found in this design doc:
https://microsoft-my.sharepoint-df.com/:w:/p/auorion/ERia8sV7FghKrCGzQ8NbENUBpYDq8tdVt3WFyOPhSaRWHQ
We also identify a couple places in the WebmMuxer where the
MediaRecorder spec (the primary consumer of the WebmMuxer) seems to
have been misinterpreted. We should discuss if we should fix these, or
have new implementations conform to the existing behavior.
Bug: 1072056
Change-Id: Ib26386ac28f6a8b28a782f41a40cea9d35dc3526
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/3984226
Reviewed-by: Ahmed Fakhry <afakhry@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Markus Handell <handellm@google.com>
Commit-Queue: Austin Orion <auorion@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1077804}
[add]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/media/muxers/muxer.h
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/vea_encoder.h
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/media/muxers/webm_muxer.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/media/muxers/BUILD.gn
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/video_track_recorder_unittest.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/media/muxers/webm_muxer_fuzzertest.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
[add]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/media/muxers/muxer.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/media/muxers/webm_muxer.h
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/vea_encoder.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/media/muxers/webm_muxer_unittest.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/chromeos/ash/services/recording/recording_encoder_muxer.cc
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h
[modify]https://crrev.com/0454d858a77e0d91f87c1cebae4a2095e8b7fb49/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler_unittest.cc
commit 0454d858a77e0d91f87c1cebae4a2095e8b7fb49
Author: Austin Orion <auorion@microsoft.com>
Date: Thu Dec 01 02:34:16 2022
Refactor WebmMuxer into a Muxer interface and implementation.
This change introduces the Muxer interface and refactors the WebmMuxer
to be an implementation of this interface. This creates room for future
implementations that support new containers, such as an Mp4Muxer.
More details about future plans can be found in this design doc:
We also identify a couple places in the WebmMuxer where the
MediaRecorder spec (the primary consumer of the WebmMuxer) seems to
have been misinterpreted. We should discuss if we should fix these, or
have new implementations conform to the existing behavior.
Bug: 1072056
Change-Id: Ib26386ac28f6a8b28a782f41a40cea9d35dc3526
Reviewed-on:
Reviewed-by: Ahmed Fakhry <afakhry@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Markus Handell <handellm@google.com>
Commit-Queue: Austin Orion <auorion@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1077804}
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
ha...@google.com <ha...@google.com> #23
[Empty comment from Monorail migration]
[Deleted User] <[Deleted User]> #24
The assigned owner "auorion@microsoft.com" is not able to receive e-mails, please re-triage.
For more details visithttps://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
For more details visit
he...@google.com <he...@google.com> #25
Markus, should we find a new owner here?
su...@microsoft.com <su...@microsoft.com> #28
[Empty comment from Monorail migration]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #29
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/86be736f34ce556f80fee5360a917004d97060eb
commit 86be736f34ce556f80fee5360a917004d97060eb
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed Apr 12 06:48:41 2023
Mp4 buffer that provide offset info for write data.
It is buffer that will be used for writing MP4 muxer box.
The writing callback what MediaRecorderHandler provides
does not provide a offset info, but MP4 muxer needs offset
info such as 'moof' box.
Bug: 1072056
Change-Id: I507be6c91e0c64ee1bbdc1a57aa3b732a7427c1f
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4411395
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1129111}
[modify]https://crrev.com/86be736f34ce556f80fee5360a917004d97060eb/media/muxers/muxer.h
[add]https://crrev.com/86be736f34ce556f80fee5360a917004d97060eb/media/muxers/output_position_tracker_unittest.cc
[modify]https://crrev.com/86be736f34ce556f80fee5360a917004d97060eb/media/muxers/BUILD.gn
[modify]https://crrev.com/86be736f34ce556f80fee5360a917004d97060eb/media/muxers/live_webm_muxer_delegate.h
[add]https://crrev.com/86be736f34ce556f80fee5360a917004d97060eb/media/muxers/output_position_tracker.h
[modify]https://crrev.com/86be736f34ce556f80fee5360a917004d97060eb/media/muxers/live_webm_muxer_delegate.cc
[add]https://crrev.com/86be736f34ce556f80fee5360a917004d97060eb/media/muxers/output_position_tracker.cc
commit 86be736f34ce556f80fee5360a917004d97060eb
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed Apr 12 06:48:41 2023
Mp4 buffer that provide offset info for write data.
It is buffer that will be used for writing MP4 muxer box.
The writing callback what MediaRecorderHandler provides
does not provide a offset info, but MP4 muxer needs offset
info such as 'moof' box.
Bug: 1072056
Change-Id: I507be6c91e0c64ee1bbdc1a57aa3b732a7427c1f
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1129111}
[modify]
[add]
[modify]
[modify]
[add]
[modify]
[add]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #30
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/b1164af130946c17703dc3b36d985937ef5f8b12
commit b1164af130946c17703dc3b36d985937ef5f8b12
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Apr 14 00:45:40 2023
Add Mp4MuxerContext.
Mp4MuxerContext class is property helpful object that
will provide additional information to the vairous box
writers such as box writer, video index, etc.
More APIs will be added to this class as needed in future.
Bug: 1072056
Change-Id: I62d3da367a9d49a76a212aca7f57ed63d9dfee46
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4420268
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1130228}
[modify]https://crrev.com/b1164af130946c17703dc3b36d985937ef5f8b12/media/muxers/BUILD.gn
[add]https://crrev.com/b1164af130946c17703dc3b36d985937ef5f8b12/media/muxers/mp4_muxer_context.cc
[add]https://crrev.com/b1164af130946c17703dc3b36d985937ef5f8b12/media/muxers/mp4_muxer_context.h
[add]https://crrev.com/b1164af130946c17703dc3b36d985937ef5f8b12/media/muxers/mp4_muxer_context_unittest.cc
commit b1164af130946c17703dc3b36d985937ef5f8b12
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Apr 14 00:45:40 2023
Add Mp4MuxerContext.
Mp4MuxerContext class is property helpful object that
will provide additional information to the vairous box
writers such as box writer, video index, etc.
More APIs will be added to this class as needed in future.
Bug: 1072056
Change-Id: I62d3da367a9d49a76a212aca7f57ed63d9dfee46
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1130228}
[modify]
[add]
[add]
[add]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #31
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/69cbef18a9db23806589131df069bd23eeacf636
commit 69cbef18a9db23806589131df069bd23eeacf636
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed Apr 26 21:11:46 2023
mp4muxer: Box writer base class
The box writer class is a base call for all upcoming
box classes. It provides two abstract methods of
Write and GetSize, and multiple protected methods.
It also has box types that has only Box and FullBox
now, but will have MP4 specific boxes in following
CL.
The unit test has a pattern how boxes will derived from
the writer class and implement methods.
Bug: 1072056
Change-Id: Ie9c0f739befb835a6d32da47f37cac4fff372232
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4436255
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1136152}
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/box_byte_stream.cc
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/formats/mp4/writable_box_definitions.h
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/mp4_box_writer.cc
[modify]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/formats/BUILD.gn
[modify]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/BUILD.gn
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/formats/mp4/writable_box_definitions.cc
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/mp4_movie_box_writer.h
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/mp4_box_writer.h
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/mp4_muxer_box_writer_unittest.cc
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/formats/mp4/fourccs.cc
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/mp4_movie_box_writer.cc
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/box_byte_stream.h
[modify]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/formats/mp4/fourccs.h
[add]https://crrev.com/69cbef18a9db23806589131df069bd23eeacf636/media/muxers/box_byte_stream_unittest.cc
commit 69cbef18a9db23806589131df069bd23eeacf636
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed Apr 26 21:11:46 2023
mp4muxer: Box writer base class
The box writer class is a base call for all upcoming
box classes. It provides two abstract methods of
Write and GetSize, and multiple protected methods.
It also has box types that has only Box and FullBox
now, but will have MP4 specific boxes in following
CL.
The unit test has a pattern how boxes will derived from
the writer class and implement methods.
Bug: 1072056
Change-Id: Ie9c0f739befb835a6d32da47f37cac4fff372232
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1136152}
[add]
[add]
[add]
[modify]
[modify]
[add]
[add]
[add]
[add]
[add]
[add]
[add]
[modify]
[add]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #32
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/06c1fa455b47bc9cba2994641e45ca80d177287d
commit 06c1fa455b47bc9cba2994641e45ca80d177287d
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Mon May 01 23:39:23 2023
Support MP4Muxer of mvex and trex boxes.
It continue to add MP4 boxes with 'mvex' and 'trex' boxes.
'mvex' box is a child of 'moov', and 'trex' is child of
'mvex'.
The change refactor the header to use macro of DECLARE_MP4_WRITER_CLASS_WITH_BOX
for box writer declaratioin.
It also updates BoxByteStream to support multiple parallel children
Bug: 1072056
Change-Id: If08b6f702a28d2fc37163bf992d84d7205d59978
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4485406
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1138092}
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/muxers/box_byte_stream.cc
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/muxers/mp4_box_writer.cc
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/muxers/mp4_movie_box_writer.cc
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/muxers/box_byte_stream.h
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/formats/mp4/writable_box_definitions.cc
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/muxers/mp4_movie_box_writer.h
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/muxers/box_byte_stream_unittest.cc
[modify]https://crrev.com/06c1fa455b47bc9cba2994641e45ca80d177287d/media/muxers/mp4_muxer_box_writer_unittest.cc
commit 06c1fa455b47bc9cba2994641e45ca80d177287d
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Mon May 01 23:39:23 2023
Support MP4Muxer of mvex and trex boxes.
It continue to add MP4 boxes with 'mvex' and 'trex' boxes.
'mvex' box is a child of 'moov', and 'trex' is child of
'mvex'.
The change refactor the header to use macro of DECLARE_MP4_WRITER_CLASS_WITH_BOX
for box writer declaratioin.
It also updates BoxByteStream to support multiple parallel children
Bug: 1072056
Change-Id: If08b6f702a28d2fc37163bf992d84d7205d59978
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1138092}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #33
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/61bc4555543d91940aef4866f385ba607238440a
commit 61bc4555543d91940aef4866f385ba607238440a
Author: Lingqi Chi <lingqi@chromium.org>
Date: Tue May 02 06:19:30 2023
Revert "Support MP4Muxer of mvex and trex boxes."
This reverts commit 06c1fa455b47bc9cba2994641e45ca80d177287d.
Reason for revert: test is flaky on
https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20MSan%20Tests/39965/overview
and
https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20ChromiumOS%20MSan%20Tests/35538/overview
Original change's description:
commit 61bc4555543d91940aef4866f385ba607238440a
Author: Lingqi Chi <lingqi@chromium.org>
Date: Tue May 02 06:19:30 2023
Revert "Support MP4Muxer of mvex and trex boxes."
This reverts commit 06c1fa455b47bc9cba2994641e45ca80d177287d.
Reason for revert: test is flaky on
and
Original change's description:
Bug: 1072056
Change-Id: Ibe0e1190f6ffcb3eb68f198fc359461f84c3e8f6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on:
Owners-Override: Lingqi Chi <lingqi@chromium.org>
Commit-Queue: Lingqi Chi <lingqi@chromium.org>
Auto-Submit: Lingqi Chi <lingqi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1138176}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #34
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/a4cd73d49a0ac1d21a7c0fd6b4070c2c4c5a24c4
commit a4cd73d49a0ac1d21a7c0fd6b4070c2c4c5a24c4
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed May 03 01:07:06 2023
Reland "Support MP4Muxer of mvex and trex boxes."
This reverts commit 61bc4555543d91940aef4866f385ba607238440a.
Reason for revert: update the test more reliably.
Original change's description:
commit a4cd73d49a0ac1d21a7c0fd6b4070c2c4c5a24c4
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed May 03 01:07:06 2023
Reland "Support MP4Muxer of mvex and trex boxes."
This reverts commit 61bc4555543d91940aef4866f385ba607238440a.
Reason for revert: update the test more reliably.
Original change's description:
Bug: 1072056
Change-Id: Ie8f672e7e01a12af20c5ab42b936880a8e4cca0a
Reviewed-on:
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1138758}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #35
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/12e5e323c181edd9a9acf8c9435d4c743723c057
commit 12e5e323c181edd9a9acf8c9435d4c743723c057
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed May 10 21:52:13 2023
Mp4 muxer: add track and media boxes.
It adds track box and its children of media box.
It adds many children of the mdia box because existing
box reader regards few children as a mandary, for example,
mdia should have 'mdhd', 'hdlr', 'minf'. 'minf' should
have `stbl`, which needs `stsd`.
The addition of these Writer simply follows existing
pattern.
The additional change is updating Box's properties,
instead StartBox, StartFullBox where it directly writes
fourcc value based on the suggestion on previous CL.
Bug: 1072056
Change-Id: If21110d4a8ea9b0eab35dc93f5f1c29c804626ee
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4507992
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1142391}
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/box_byte_stream.cc
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_box_writer.cc
[add]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_type_conversion.cc
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/BUILD.gn
[add]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_type_conversion.h
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_muxer_context.cc
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/formats/mp4/writable_box_definitions.cc
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_box_writer.h
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_movie_box_writer.h
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_muxer_box_writer_unittest.cc
[add]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_type_conversion_unittest.cc
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_movie_box_writer.cc
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/box_byte_stream.h
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/box_byte_stream_unittest.cc
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_muxer_context.h
[modify]https://crrev.com/12e5e323c181edd9a9acf8c9435d4c743723c057/media/muxers/mp4_muxer_context_unittest.cc
commit 12e5e323c181edd9a9acf8c9435d4c743723c057
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed May 10 21:52:13 2023
Mp4 muxer: add track and media boxes.
It adds track box and its children of media box.
It adds many children of the mdia box because existing
box reader regards few children as a mandary, for example,
mdia should have 'mdhd', 'hdlr', 'minf'. 'minf' should
have `stbl`, which needs `stsd`.
The addition of these Writer simply follows existing
pattern.
The additional change is updating Box's properties,
instead StartBox, StartFullBox where it directly writes
fourcc value based on the suggestion on previous CL.
Bug: 1072056
Change-Id: If21110d4a8ea9b0eab35dc93f5f1c29c804626ee
Reviewed-on:
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1142391}
[modify]
[modify]
[modify]
[add]
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #36
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/603db1466b914caf5cb03e049de48d9996a25559
commit 603db1466b914caf5cb03e049de48d9996a25559
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed May 17 01:27:44 2023
Mp4Muxer: stco, stsz, stts, stsc, url, dref boxes support.
It supports the some of mandatry but empty boxes such as
stco, stsz, stts, stsc. It also additioinally support
dref and url boxes that has usually empty data as well.
Bug: 1072056
Change-Id: I1e514bb27ec912cb7a5518579565789c0ef902af
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4534607
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1145066}
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/muxers/box_byte_stream.cc
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/muxers/mp4_movie_box_writer.cc
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/muxers/box_byte_stream.h
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/formats/mp4/writable_box_definitions.cc
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/formats/mp4/fourccs.h
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/muxers/mp4_movie_box_writer.h
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/muxers/box_byte_stream_unittest.cc
[modify]https://crrev.com/603db1466b914caf5cb03e049de48d9996a25559/media/muxers/mp4_muxer_box_writer_unittest.cc
commit 603db1466b914caf5cb03e049de48d9996a25559
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed May 17 01:27:44 2023
Mp4Muxer: stco, stsz, stts, stsc, url, dref boxes support.
It supports the some of mandatry but empty boxes such as
stco, stsz, stts, stsc. It also additioinally support
dref and url boxes that has usually empty data as well.
Bug: 1072056
Change-Id: I1e514bb27ec912cb7a5518579565789c0ef902af
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1145066}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
bk...@snapchat.com <bk...@snapchat.com> #37
+1 on this bug, it would be great to get support for "video/mp4" recording with MediaRecorder. It sort of defeats the purpose of this high level API to not support the most common video format. Safari currently supports this as well.
I know it's possible to encode h264 streams with VideoEncoder and mux them with various npm packages, but that's a lot more involved. Hoping this gets prioritized soon
I know it's possible to encode h264 streams with VideoEncoder and mux them with various npm packages, but that's a lot more involved. Hoping this gets prioritized soon
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #38
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/180b06f21dc71e1afa399bc0405057adc23d6cb4
commit 180b06f21dc71e1afa399bc0405057adc23d6cb4
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Sat May 20 00:49:41 2023
Mp4 muxer with AVC1, AVCC, PASP boxes.
It adds visual sample entry that supports AVC1 box
and its children of AVCC, PASP.
It supports AVCC box under USE_PROPRIETARY_CODECS macro.
It also updated existing reader side to provide concrete
fourcc for VideoSampleEntry for testing purpose where
test can't run due to the VideoSampleEntry::BoxType's DCHECK
faiure.
Bug: 1072056
Change-Id: I871bc13ab36bff152f7af61e5aef86f7ce64f579
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4547962
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1146809}
[modify]https://crrev.com/180b06f21dc71e1afa399bc0405057adc23d6cb4/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/180b06f21dc71e1afa399bc0405057adc23d6cb4/media/muxers/mp4_movie_box_writer.cc
[modify]https://crrev.com/180b06f21dc71e1afa399bc0405057adc23d6cb4/media/formats/mp4/writable_box_definitions.cc
[modify]https://crrev.com/180b06f21dc71e1afa399bc0405057adc23d6cb4/media/muxers/mp4_movie_box_writer.h
[modify]https://crrev.com/180b06f21dc71e1afa399bc0405057adc23d6cb4/media/muxers/mp4_muxer_box_writer_unittest.cc
commit 180b06f21dc71e1afa399bc0405057adc23d6cb4
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Sat May 20 00:49:41 2023
Mp4 muxer with AVC1, AVCC, PASP boxes.
It adds visual sample entry that supports AVC1 box
and its children of AVCC, PASP.
It supports AVCC box under USE_PROPRIETARY_CODECS macro.
It also updated existing reader side to provide concrete
fourcc for VideoSampleEntry for testing purpose where
test can't run due to the VideoSampleEntry::BoxType's DCHECK
faiure.
Bug: 1072056
Change-Id: I871bc13ab36bff152f7af61e5aef86f7ce64f579
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1146809}
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #39
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/521a2905112c657b72955b69c4fc07a36ab79eea
commit 521a2905112c657b72955b69c4fc07a36ab79eea
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri May 26 06:56:56 2023
mp4muxer: Add Audio Sample Entry and Elementary Stream Descriptor.
The change adds audio sample entry ('mp4a') box and
Elementary Stream Descriptor ('esds') for audio with
Bit Rate box ('btrt').
ESDS box is relatively complex box as it contains
Audio specific decoder configuration and GASpecific configuration.
The current change supports minimum fields that can be
acquired from the AAC ADTS header.
We can support extract GASpecific config as needed in future.
Bug: 1072056
Change-Id: Ice9e891d24e7d0812f58bbe4549ecc05a01ffb2a
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4559050
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1149570}
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/filters/mac/audio_toolbox_audio_decoder.cc
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/muxers/mp4_movie_box_writer.cc
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/formats/mp4/writable_box_definitions.cc
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/formats/mp4/fourccs.h
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/formats/mp4/es_descriptor.h
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/muxers/mp4_movie_box_writer.h
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/formats/mp4/es_descriptor.cc
[modify]https://crrev.com/521a2905112c657b72955b69c4fc07a36ab79eea/media/muxers/mp4_muxer_box_writer_unittest.cc
commit 521a2905112c657b72955b69c4fc07a36ab79eea
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri May 26 06:56:56 2023
mp4muxer: Add Audio Sample Entry and Elementary Stream Descriptor.
The change adds audio sample entry ('mp4a') box and
Elementary Stream Descriptor ('esds') for audio with
Bit Rate box ('btrt').
ESDS box is relatively complex box as it contains
Audio specific decoder configuration and GASpecific configuration.
The current change supports minimum fields that can be
acquired from the AAC ADTS header.
We can support extract GASpecific config as needed in future.
Bug: 1072056
Change-Id: Ice9e891d24e7d0812f58bbe4549ecc05a01ffb2a
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1149570}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #40
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/4457ccd0ac27b00b3d49e9b131a0445a63111791
commit 4457ccd0ac27b00b3d49e9b131a0445a63111791
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Thu Jun 01 22:34:02 2023
MP4 muxer - moof box and its children, and mdat box.
It adds moof box and its children of mfhd, traf, tfhd,
hfdt, trun, and mdat box.
1. It uses default-base-is-moof that is a enforced flag from
web isobmff, which leads to deletion of moof offset set/get
APIs from the context.
2. It also uses BoxByteStream for mdat offset, which leads
to deletion of mdat offset set/get APIs from the context.
3. It adds WriteAndFlush API to Mp4BoxWriter that accept
BoxByteStream as a parameter to support multiple root boxes
write with single BoxByteStream object. It is required
for 'trun' box's data_offset refer to another root box
of 'mdat' box.
4. It remove WriteU24 API from the BoxByteStream because
it is only used once, and the current implementation does
not support big endian format. Removing and write U32 with
bit operations seems more efficient than wrting big endian
format (WriteBigEndian).
5. This CL is the last of box writer.
Bug: 1072056
Change-Id: I90dd7c1c3fbcd3a9fa9b5d869bf9550122465e26
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4575451
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1152180}
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/box_byte_stream.cc
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_box_writer.cc
[add]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_fragment_box_writer.h
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/BUILD.gn
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_muxer_context.cc
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/formats/mp4/writable_box_definitions.cc
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_box_writer.h
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_movie_box_writer.h
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_muxer_box_writer_unittest.cc
[add]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_fragment_box_writer.cc
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_movie_box_writer.cc
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/box_byte_stream.h
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/box_byte_stream_unittest.cc
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_muxer_context.h
[modify]https://crrev.com/4457ccd0ac27b00b3d49e9b131a0445a63111791/media/muxers/mp4_muxer_context_unittest.cc
commit 4457ccd0ac27b00b3d49e9b131a0445a63111791
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Thu Jun 01 22:34:02 2023
MP4 muxer - moof box and its children, and mdat box.
It adds moof box and its children of mfhd, traf, tfhd,
hfdt, trun, and mdat box.
1. It uses default-base-is-moof that is a enforced flag from
web isobmff, which leads to deletion of moof offset set/get
APIs from the context.
2. It also uses BoxByteStream for mdat offset, which leads
to deletion of mdat offset set/get APIs from the context.
3. It adds WriteAndFlush API to Mp4BoxWriter that accept
BoxByteStream as a parameter to support multiple root boxes
write with single BoxByteStream object. It is required
for 'trun' box's data_offset refer to another root box
of 'mdat' box.
4. It remove WriteU24 API from the BoxByteStream because
it is only used once, and the current implementation does
not support big endian format. Removing and write U32 with
bit operations seems more efficient than wrting big endian
format (WriteBigEndian).
5. This CL is the last of box writer.
Bug: 1072056
Change-Id: I90dd7c1c3fbcd3a9fa9b5d869bf9550122465e26
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1152180}
[modify]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #41
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/79b58344781e90987928060097687cb1f0292920
commit 79b58344781e90987928060097687cb1f0292920
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Tue Jun 20 21:08:54 2023
Add MP4 Muxer class that will parse the encoded stream.
It is placehodler for the MP4 Muxer that will inherit Muxer
class, and delegate class that will build the MP4 box.
MP4Muxer class will handle the recorder command such as Pause,
Resume, and passes the incomding encoded stream to the delegate
class where it will build the MP4 data blob.
The change added absl::optional<AudioEncoder::CodecDescription>
parameter to the existing API of OnEncodedAudio.
Bug: 1072056
Change-Id: I81f4451a10de3b9c057e3285fe1eb788a133328e
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4612170
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Ahmed Fakhry <afakhry@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1160278}
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/muxer.h
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/chromeos/ash/services/recording/webm_encoder_muxer.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
[add]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/mp4_muxer_delegate.h
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/webm_muxer.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/BUILD.gn
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/webm_muxer_fuzzertest.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/webm_muxer.h
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/audio_track_mojo_encoder.cc
[add]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/mp4_muxer.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder_unittest.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/audio_track_encoder.h
[add]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/mp4_muxer_delegate.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/audio_track_pcm_encoder.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/webm_muxer_unittest.cc
[add]https://crrev.com/79b58344781e90987928060097687cb1f0292920/media/muxers/mp4_muxer.h
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder.h
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler_unittest.cc
[modify]https://crrev.com/79b58344781e90987928060097687cb1f0292920/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h
commit 79b58344781e90987928060097687cb1f0292920
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Tue Jun 20 21:08:54 2023
Add MP4 Muxer class that will parse the encoded stream.
It is placehodler for the MP4 Muxer that will inherit Muxer
class, and delegate class that will build the MP4 box.
MP4Muxer class will handle the recorder command such as Pause,
Resume, and passes the incomding encoded stream to the delegate
class where it will build the MP4 data blob.
The change added absl::optional<AudioEncoder::CodecDescription>
parameter to the existing API of OnEncodedAudio.
Bug: 1072056
Change-Id: I81f4451a10de3b9c057e3285fe1eb788a133328e
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Ahmed Fakhry <afakhry@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1160278}
[modify]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
[add]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #42
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/c81d55bb6093b18a0bfb3575035346efa0933ab9
commit c81d55bb6093b18a0bfb3575035346efa0933ab9
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Tue Jun 27 23:42:48 2023
mp4_muxer: Read NALU and adds data to the mdat.
Initially, the CL had full video stream parsing and creating box
implementation, but it looks large change so I split it to two.
Every key encoded key frame has different SPS and PPS (Windows case).
so we just copy the encoded stream as it is to the mdat data box.
The unit test for Mp4MuxerDelegate::AddSampleDataToTrunAndMdat will be added with the next CL where video stream data are populated.
Bug: 1072056
Change-Id: I3e1ead0dc0c856c21861a61f6316a106fc06b24e
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4642470
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1163296}
[modify]https://crrev.com/c81d55bb6093b18a0bfb3575035346efa0933ab9/media/muxers/mp4_fragment_box_writer.cc
[modify]https://crrev.com/c81d55bb6093b18a0bfb3575035346efa0933ab9/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/c81d55bb6093b18a0bfb3575035346efa0933ab9/media/muxers/mp4_muxer_delegate.cc
[modify]https://crrev.com/c81d55bb6093b18a0bfb3575035346efa0933ab9/media/muxers/mp4_muxer_delegate.h
[modify]https://crrev.com/c81d55bb6093b18a0bfb3575035346efa0933ab9/media/muxers/BUILD.gn
[modify]https://crrev.com/c81d55bb6093b18a0bfb3575035346efa0933ab9/media/muxers/mp4_muxer_box_writer_unittest.cc
[add]https://crrev.com/c81d55bb6093b18a0bfb3575035346efa0933ab9/media/muxers/mp4_muxer_delegate_unittest.cc
commit c81d55bb6093b18a0bfb3575035346efa0933ab9
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Tue Jun 27 23:42:48 2023
mp4_muxer: Read NALU and adds data to the mdat.
Initially, the CL had full video stream parsing and creating box
implementation, but it looks large change so I split it to two.
Every key encoded key frame has different SPS and PPS (Windows case).
so we just copy the encoded stream as it is to the mdat data box.
The unit test for Mp4MuxerDelegate::AddSampleDataToTrunAndMdat will be added with the next CL where video stream data are populated.
Bug: 1072056
Change-Id: I3e1ead0dc0c856c21861a61f6316a106fc06b24e
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1163296}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[add]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #43
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/f36251f0480bb17ac5b1a27d01272d32d97a1262
commit f36251f0480bb17ac5b1a27d01272d32d97a1262
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Jul 07 22:39:59 2023
MP4-Muxer uses milliseconds instead of seconds for passing duration value.
MP4 container has durations in multiple boxes and its value
relies on the timescale value, which is a unit of 1 seconds.
If the time scale is 1000 and duration is 500, then the duration
is 0.5 seconds.
MP4 Muxer used to use TimeDelta::Seconds for a medium passing
the value between the client and box builder as it uses TimeDelta
as a duration type.
However, seconds is too big to hold milliseconds size of duration
so we have to use milliseconds.
It also uses milliseconds for creation and modification time to
simplify the code convention.
Bug: 1072056
Change-Id: Ia3cc07381a93d4036543b2cd261395554d6171fb
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4673801
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1167670}
[modify]https://crrev.com/f36251f0480bb17ac5b1a27d01272d32d97a1262/media/muxers/mp4_fragment_box_writer.cc
[modify]https://crrev.com/f36251f0480bb17ac5b1a27d01272d32d97a1262/media/muxers/mp4_movie_box_writer.cc
[modify]https://crrev.com/f36251f0480bb17ac5b1a27d01272d32d97a1262/media/muxers/mp4_type_conversion.h
[modify]https://crrev.com/f36251f0480bb17ac5b1a27d01272d32d97a1262/media/muxers/mp4_muxer_box_writer_unittest.cc
commit f36251f0480bb17ac5b1a27d01272d32d97a1262
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Jul 07 22:39:59 2023
MP4-Muxer uses milliseconds instead of seconds for passing duration value.
MP4 container has durations in multiple boxes and its value
relies on the timescale value, which is a unit of 1 seconds.
If the time scale is 1000 and duration is 500, then the duration
is 0.5 seconds.
MP4 Muxer used to use TimeDelta::Seconds for a medium passing
the value between the client and box builder as it uses TimeDelta
as a duration type.
However, seconds is too big to hold milliseconds size of duration
so we have to use milliseconds.
It also uses milliseconds for creation and modification time to
simplify the code convention.
Bug: 1072056
Change-Id: Ia3cc07381a93d4036543b2cd261395554d6171fb
Reviewed-on:
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1167670}
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #44
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/3b0c09789dbe8a36fc18f90b7d369686fabbf522
commit 3b0c09789dbe8a36fc18f90b7d369686fabbf522
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Mon Jul 10 20:20:37 2023
MP4 Muxer: Add code description to media::Muxer::OnEncodedVideo.
- Add VideoEncoder::CodecDescription parameter for all
of OnEncodedVideo APIs.
- It changes all related files for OnEncodedVideo.
Bug: 1072056
Change-Id: Ife3253ee65d4ea9e2e5105aac91a082fd5a68ae6
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4664251
Reviewed-by: Roman Sorokin <rsorokin@google.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1168288}
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/muxer.h
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/chromeos/ash/services/recording/webm_encoder_muxer.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/media_recorder_encoder_wrapper_unittest.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/webm_muxer.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/mp4_muxer_delegate.h
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/media_recorder_encoder_wrapper.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/video_track_recorder_unittest.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/webm_muxer_fuzzertest.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/webm_muxer.h
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/mp4_muxer.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/mp4_fragment_box_writer.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/vea_encoder.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/mp4_muxer_delegate.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/webm_muxer_unittest.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/media/muxers/mp4_muxer.h
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h
[modify]https://crrev.com/3b0c09789dbe8a36fc18f90b7d369686fabbf522/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler_unittest.cc
commit 3b0c09789dbe8a36fc18f90b7d369686fabbf522
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Mon Jul 10 20:20:37 2023
MP4 Muxer: Add code description to media::Muxer::OnEncodedVideo.
- Add VideoEncoder::CodecDescription parameter for all
of OnEncodedVideo APIs.
- It changes all related files for OnEncodedVideo.
Bug: 1072056
Change-Id: Ife3253ee65d4ea9e2e5105aac91a082fd5a68ae6
Reviewed-on:
Reviewed-by: Roman Sorokin <rsorokin@google.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1168288}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #45
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/582bfaa2c578393f215415ccdcaff0e5f0f8370f
commit 582bfaa2c578393f215415ccdcaff0e5f0f8370f
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Jul 21 22:02:11 2023
MP4 Muxer: Implement OnEncodedVideo for muxer.
Muxer creates MP4 boxes with the information on OnEncodedVideo
API call. It creates Movie and its children, fragment.
1. It caculcate the duration with the first and last call of
OnEncodedVideo, and uses timescale for duration TimeDelta.
2. It calculate sample duration by using the current sample
minus the prior sample.
3. Every fragment ('moof') box will be created with key frame.
(In Windows, 100 samples are in single fragment).
4. It uses input code_descriptions for 'avcC' box.
5. For test, it uses MP4StreamParser to parse the created data,
which will validate it. It also uses BoxReader to validate
respective box validation.
Bug: 1072056
Change-Id: Iaa4e45ba793b63bc32610c5decb746f30e694b19
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4674645
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1173736}
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/muxers/mp4_muxer_delegate.h
[add]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/test/data/avc-bitstream-format-0.h264
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/muxers/BUILD.gn
[add]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/test/data/avc-bitstream-format-1.h264
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/test/data/README.md
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/muxers/mp4_muxer_box_writer_unittest.cc
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/muxers/mp4_muxer_delegate_unittest.cc
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/muxers/mp4_fragment_box_writer.cc
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/muxers/mp4_muxer_delegate.cc
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/test/media_bundle_data.filelist
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/unit_tests_bundle_data.filelist
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/muxers/DEPS
[modify]https://crrev.com/582bfaa2c578393f215415ccdcaff0e5f0f8370f/media/muxers/mp4_movie_box_writer.cc
commit 582bfaa2c578393f215415ccdcaff0e5f0f8370f
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Jul 21 22:02:11 2023
MP4 Muxer: Implement OnEncodedVideo for muxer.
Muxer creates MP4 boxes with the information on OnEncodedVideo
API call. It creates Movie and its children, fragment.
1. It caculcate the duration with the first and last call of
OnEncodedVideo, and uses timescale for duration TimeDelta.
2. It calculate sample duration by using the current sample
minus the prior sample.
3. Every fragment ('moof') box will be created with key frame.
(In Windows, 100 samples are in single fragment).
4. It uses input code_descriptions for 'avcC' box.
5. For test, it uses MP4StreamParser to parse the created data,
which will validate it. It also uses BoxReader to validate
respective box validation.
Bug: 1072056
Change-Id: Iaa4e45ba793b63bc32610c5decb746f30e694b19
Reviewed-on:
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1173736}
[modify]
[modify]
[add]
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #46
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/dc0e688ee30d1fe52edb185c16d67bd24f2bda47
commit dc0e688ee30d1fe52edb185c16d67bd24f2bda47
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Sun Aug 06 04:58:01 2023
mp4 muxer - fill out box writer with encoded audio.
This is an audio version of the code that fills the writer box with
encoded stream after the previous CL of video stream.
The code has been refactored to share many functions between audio and video,
which resulted in relatively big changes.
The audio box is almost the same as the video box. The only additional code is in
the CreateFragmentOrAddTrackIfNeeded function, which decides whether to create a
new fragment or add a track when both audio and video streams are added.
The relevant tests have also been added.
Bug: 1072056
Change-Id: Ibf81637a93598a54521380898b39b2ce3e368996
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4718428
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1180023}
[modify]https://crrev.com/dc0e688ee30d1fe52edb185c16d67bd24f2bda47/media/muxers/mp4_fragment_box_writer.cc
[modify]https://crrev.com/dc0e688ee30d1fe52edb185c16d67bd24f2bda47/media/muxers/mp4_muxer_delegate.cc
[modify]https://crrev.com/dc0e688ee30d1fe52edb185c16d67bd24f2bda47/media/muxers/mp4_muxer_delegate.h
[modify]https://crrev.com/dc0e688ee30d1fe52edb185c16d67bd24f2bda47/media/muxers/mp4_muxer_delegate_unittest.cc
commit dc0e688ee30d1fe52edb185c16d67bd24f2bda47
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Sun Aug 06 04:58:01 2023
mp4 muxer - fill out box writer with encoded audio.
This is an audio version of the code that fills the writer box with
encoded stream after the previous CL of video stream.
The code has been refactored to share many functions between audio and video,
which resulted in relatively big changes.
The audio box is almost the same as the video box. The only additional code is in
the CreateFragmentOrAddTrackIfNeeded function, which decides whether to create a
new fragment or add a track when both audio and video streams are added.
The relevant tests have also been added.
Bug: 1072056
Change-Id: Ibf81637a93598a54521380898b39b2ce3e368996
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1180023}
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #47
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/ba0a7186df421fa2226ebc484f8eea9cf492a13f
commit ba0a7186df421fa2226ebc484f8eea9cf492a13f
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Aug 11 19:16:40 2023
mp4-muxer: adds ftyp and mfra boxes.
It adds the File type box and random access box.
file type box has major brand od 'mp41', and compatible
brands of mp4a and avc1. More feedbacks are required for
proper compatible brands though.
MFRA box has random access box that help demuxer to locate
the sync sample of (video) faster.
mp4 muxer - adds FTYP and MFRA boxes.
FTYP is file type box that should exist in the MP4 container.
MFRA is fragment random access box that is the last in the
file. It has sync sample location in each fragment so that
it can help demux.
Init of 'ftyp' and 'mfra' boxes.
Bug: 1072056
Change-Id: I6abd32d5905506eb143be1f8d621b29d3ded898d
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4757611
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1182716}
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_box_writer.cc
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/formats/mp4/writable_box_definitions.h
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_fragment_box_writer.h
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_muxer_delegate.h
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/formats/mp4/writable_box_definitions.cc
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_movie_box_writer.h
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_box_writer.h
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_muxer_box_writer_unittest.cc
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_muxer_delegate_unittest.cc
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_fragment_box_writer.cc
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_muxer_delegate.cc
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/mp4_movie_box_writer.cc
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/box_byte_stream.h
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/formats/mp4/fourccs.h
[modify]https://crrev.com/ba0a7186df421fa2226ebc484f8eea9cf492a13f/media/muxers/box_byte_stream_unittest.cc
commit ba0a7186df421fa2226ebc484f8eea9cf492a13f
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Aug 11 19:16:40 2023
mp4-muxer: adds ftyp and mfra boxes.
It adds the File type box and random access box.
file type box has major brand od 'mp41', and compatible
brands of mp4a and avc1. More feedbacks are required for
proper compatible brands though.
MFRA box has random access box that help demuxer to locate
the sync sample of (video) faster.
mp4 muxer - adds FTYP and MFRA boxes.
FTYP is file type box that should exist in the MP4 container.
MFRA is fragment random access box that is the last in the
file. It has sync sample location in each fragment so that
it can help demux.
Init of 'ftyp' and 'mfra' boxes.
Bug: 1072056
Change-Id: I6abd32d5905506eb143be1f8d621b29d3ded898d
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1182716}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #48
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/db165c703e06576ed95a763a0285f1b9966e022e
commit db165c703e06576ed95a763a0285f1b9966e022e
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Sep 01 04:31:08 2023
mp4 muxer - Implement Mp4Muxer class for MediaRecorder APIs.
It provides MediaRecorder APIs of 'start', 'pause', 'resume'.
The overall implementation is based on WebM muxer. The difference
would be live stream support that mp4 muxer doesn't support it yet.
Bug: 1072056
Change-Id: I03425acd80cf34fa0a97f73d1c28bdfe4feb8bc4
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4779642
Reviewed-by: Markus Handell <handellm@google.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1191158}
[modify]https://crrev.com/db165c703e06576ed95a763a0285f1b9966e022e/media/muxers/mp4_muxer_delegate.cc
[add]https://crrev.com/db165c703e06576ed95a763a0285f1b9966e022e/media/muxers/mp4_muxer_unittest.cc
[modify]https://crrev.com/db165c703e06576ed95a763a0285f1b9966e022e/media/muxers/mp4_muxer_delegate.h
[modify]https://crrev.com/db165c703e06576ed95a763a0285f1b9966e022e/media/muxers/mp4_muxer.h
[modify]https://crrev.com/db165c703e06576ed95a763a0285f1b9966e022e/media/muxers/BUILD.gn
[modify]https://crrev.com/db165c703e06576ed95a763a0285f1b9966e022e/media/muxers/muxer.cc
[modify]https://crrev.com/db165c703e06576ed95a763a0285f1b9966e022e/media/muxers/mp4_muxer.cc
commit db165c703e06576ed95a763a0285f1b9966e022e
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Sep 01 04:31:08 2023
mp4 muxer - Implement Mp4Muxer class for MediaRecorder APIs.
It provides MediaRecorder APIs of 'start', 'pause', 'resume'.
The overall implementation is based on WebM muxer. The difference
would be live stream support that mp4 muxer doesn't support it yet.
Bug: 1072056
Change-Id: I03425acd80cf34fa0a97f73d1c28bdfe4feb8bc4
Reviewed-on:
Reviewed-by: Markus Handell <handellm@google.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1191158}
[modify]
[add]
[modify]
[modify]
[modify]
[modify]
[modify]
su...@microsoft.com <su...@microsoft.com> #49
[Empty comment from Monorail migration]
su...@microsoft.com <su...@microsoft.com> #50
[Empty comment from Monorail migration]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #51
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/4b773137efefe20699b8bf647b974fab65a5c825
commit 4b773137efefe20699b8bf647b974fab65a5c825
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Thu Sep 14 23:35:58 2023
Provide Mp4Muxer feature flag.
It provides feature flag of MediaRecorderEnableMp4Muxer that
is disabled by default.
When feature flag is enabled and MediaRecorder options has
right combination of type and codec, then it isTypeSupported will
return true and internal API such as ActualMimeType returns
correct string.
However, we have blocking bug of support codec_description
on audio and video encoded stream so creating MP4 blob
is not fully supported yet even with flag enabled.
Bug: 1072056
Change-Id: Ibc9e8a2f5c8cd0096b555a3cdc9a0b4793c9c427
Binary-Size: Size increase is unavoidable, add new feature of mp4 muxer.
Change-Id: Ibc9e8a2f5c8cd0096b555a3cdc9a0b4793c9c427
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4834770
Reviewed-by: Markus Handell <handellm@google.com>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1196887}
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/track_recorder.h
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder.cc
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/video_track_recorder_unittest.cc
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/BUILD.gn
[add]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/track_recorder.cc
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder.h
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h
[modify]https://crrev.com/4b773137efefe20699b8bf647b974fab65a5c825/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler_unittest.cc
commit 4b773137efefe20699b8bf647b974fab65a5c825
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Thu Sep 14 23:35:58 2023
Provide Mp4Muxer feature flag.
It provides feature flag of MediaRecorderEnableMp4Muxer that
is disabled by default.
When feature flag is enabled and MediaRecorder options has
right combination of type and codec, then it isTypeSupported will
return true and internal API such as ActualMimeType returns
correct string.
However, we have blocking bug of support codec_description
on audio and video encoded stream so creating MP4 blob
is not fully supported yet even with flag enabled.
Bug: 1072056
Change-Id: Ibc9e8a2f5c8cd0096b555a3cdc9a0b4793c9c427
Binary-Size: Size increase is unavoidable, add new feature of mp4 muxer.
Change-Id: Ibc9e8a2f5c8cd0096b555a3cdc9a0b4793c9c427
Reviewed-on:
Reviewed-by: Markus Handell <handellm@google.com>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1196887}
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[modify]
[add]
[modify]
[modify]
[modify]
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #52
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/9743963a88f8ee02fc1f6bccbc10e01f91295636
commit 9743963a88f8ee02fc1f6bccbc10e01f91295636
Author: Markus Handell <handellm@google.com>
Date: Sat Oct 21 15:14:09 2023
Mp4MuxerDelegate: use std::string in API.
This is done for Muxer consistency and enabling moves without copies
within the delegate implementation.
Bug: 1072056
Change-Id: If6b92fbc2ce976ae55e5e184927b75fdc3ccc6d1
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4957237
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/main@{#1213138}
[modify]https://crrev.com/9743963a88f8ee02fc1f6bccbc10e01f91295636/media/muxers/mp4_muxer_delegate.cc
[modify]https://crrev.com/9743963a88f8ee02fc1f6bccbc10e01f91295636/media/muxers/mp4_muxer_delegate.h
[modify]https://crrev.com/9743963a88f8ee02fc1f6bccbc10e01f91295636/media/muxers/mp4_muxer_unittest.cc
[modify]https://crrev.com/9743963a88f8ee02fc1f6bccbc10e01f91295636/media/muxers/mp4_muxer_delegate_unittest.cc
commit 9743963a88f8ee02fc1f6bccbc10e01f91295636
Author: Markus Handell <handellm@google.com>
Date: Sat Oct 21 15:14:09 2023
Mp4MuxerDelegate: use std::string in API.
This is done for Muxer consistency and enabling moves without copies
within the delegate implementation.
Bug: 1072056
Change-Id: If6b92fbc2ce976ae55e5e184927b75fdc3ccc6d1
Reviewed-on:
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/main@{#1213138}
[modify]
[modify]
[modify]
[modify]
su...@microsoft.com <su...@microsoft.com> #53
[Empty comment from Monorail migration]
al...@gmail.com <al...@gmail.com> #54
:O
This will mean that ChromeOS will have screen recording with mp4 output?!
This will mean that ChromeOS will have screen recording with mp4 output?!
su...@microsoft.com <su...@microsoft.com> #55
alvaroguzmanp@, hmm, it supports only Windows/Mac at this time. If you need ChromeOS, I will reactive this bug now.
al...@gmail.com <al...@gmail.com> #56
Yes please.
The chromeos recording is great, i use it all the time. But i have to say that not many sites support webm.
So in many cases i have to convert the webm to mp4 in order to post the screenrecord.
The chromeos recording is great, i use it all the time. But i have to say that not many sites support webm.
So in many cases i have to convert the webm to mp4 in order to post the screenrecord.
su...@microsoft.com <su...@microsoft.com> #57
[Empty comment from Monorail migration]
da...@chromium.org <da...@chromium.org> #58
I don't think we can make mp4a.40.2 work on ChromeOS, so you can probably keep this as fixed.
We should add support for video/mp4 w/ vp9, av1, opus though so mp4 containers can be used on other platforms. Do we have a tracking bug already for that?
We should add support for video/mp4 w/ vp9, av1, opus though so mp4 containers can be used on other platforms. Do we have a tracking bug already for that?
as...@scirra.com <as...@scirra.com> #59
su...@microsoft.com <su...@microsoft.com> #60
[Empty comment from Monorail migration]
su...@microsoft.com <su...@microsoft.com> #61
ash@, can't say when as we want to receive enough feedback before making it default.
ha...@google.com <ha...@google.com> #62
[Empty comment from Monorail migration]
si...@zappar.com <si...@zappar.com> #63
What's the status of Android support?
This bug was originally about a cross-platform mp4 muxer, and then got somewhat taken over by windows AAC encoding. Closing it still seems premature if this is still only implemented for Windows/Mac as of now.
This bug was originally about a cross-platform mp4 muxer, and then got somewhat taken over by windows AAC encoding. Closing it still seems premature if this is still only implemented for Windows/Mac as of now.
as...@scirra.com <as...@scirra.com> #64
How do we test this then so we can offer feedback? The current status seems to be "behind a flag", but searching chrome://flags for a few keywords like mp4 or mediarecorder returns no results. Which flag is it behind?
It's not clear how to test or what the release schedule is - any clarity on that would be appreciated.
It's not clear how to test or what the release schedule is - any clarity on that would be appreciated.
da...@chromium.org <da...@chromium.org> #65
@sunggch: Were you going to send an intent to ship for this feature so that it can be enabled by default? Or is Edge just planning to enable it on their side?
su...@microsoft.com <su...@microsoft.com> #67
@dalecurtis: We plan to continue to work on Chromium where it will be enabled by default. I was planning to make it origin trial first with any known partners. can we proceed to intent to ship without origin trial (as it is additional mime support for established spec)? (it's not clear to me what needs to be made for intent to ship for this project)
da...@chromium.org <da...@chromium.org> #68
I don't think an OT is necessary for this feature. It's not a fundamentally new API shape, it's just adding a new type for MediaRecorder. I believe you just need to send an intent to ship after ensuring there's adequate web-platform-tests.
Since this hasn't been enabled, lets keep this open for now.
Since this hasn't been enabled, lets keep this open for now.
da...@chromium.org <da...@chromium.org> #69
[Empty comment from Monorail migration]
br...@audiopump.co <br...@audiopump.co> #70
The `mp4a.40.2` mentioned in the question title is AAC-LC. Will this codec be available in the current change?
su...@microsoft.com <su...@microsoft.com> #71
su...@microsoft.com <su...@microsoft.com> #72
@brad, spec wise, mp4a.40.2 is aac-lc. You can test mp4 with aac here with feature flag (--enable-features=MediaRecorderEnableMp4Muxer), https://sunggook.github.io/media-recorder/
as...@scirra.com <as...@scirra.com> #73
Thanks for letting us know the flag to test with!
I've been trying it out, and the support for codec strings between HTML video/audio elements canPlayType() and MediaRecorder.isTypeSupported seems inconsistent. The use of codec strings like "h264" and "aac" seems unusual and isn't supported by other web platform features, even within Chrome. For example:
audioElem.canPlayType("audio/mp4; codecs=mp4a.40.2") -> "probably" (OK)
MediaRecorder.isTypeSupported("audio/mp4; codecs=mp4a.40.2") -> false (wrong!)
audioElem.canPlayType("audio/mp4; codecs=aac") -> "" (wrong? or invalid codec string?)
MediaRecorder.isTypeSupported("audio/mp4; codecs=aac") -> true (invalid codec string?)
videoElem.canPlayType("video/mp4; codecs=avc1.420034") -> "probably" (OK)
MediaRecorder.isTypeSupported("video/mp4; codecs=avc1.420034") -> true (OK)
video.canPlayType("video/mp4; codecs=h264") -> "" (wrong? invalid codec string?)
MediaRecorder.isTypeSupported("video/mp4; codecs=h264") -> true (invalid codec string?)
I haven't had the chance to check Safari yet which also supports H.264/AAC encoding, but this shows Chrome isn't even consistent within itself, nor even with how MediaRecorder handles video and audio codec strings. Please make sure this is consistent as it makes it a headache to get the right codec string depending on the browser and API. I think MediaRecorder.isTypeSupported() should at least be returning true for "audio/mp4; codecs=mp4a.40.2".
I've been trying it out, and the support for codec strings between HTML video/audio elements canPlayType() and MediaRecorder.isTypeSupported seems inconsistent. The use of codec strings like "h264" and "aac" seems unusual and isn't supported by other web platform features, even within Chrome. For example:
audioElem.canPlayType("audio/mp4; codecs=mp4a.40.2") -> "probably" (OK)
MediaRecorder.isTypeSupported("audio/mp4; codecs=mp4a.40.2") -> false (wrong!)
audioElem.canPlayType("audio/mp4; codecs=aac") -> "" (wrong? or invalid codec string?)
MediaRecorder.isTypeSupported("audio/mp4; codecs=aac") -> true (invalid codec string?)
videoElem.canPlayType("video/mp4; codecs=avc1.420034") -> "probably" (OK)
MediaRecorder.isTypeSupported("video/mp4; codecs=avc1.420034") -> true (OK)
video.canPlayType("video/mp4; codecs=h264") -> "" (wrong? invalid codec string?)
MediaRecorder.isTypeSupported("video/mp4; codecs=h264") -> true (invalid codec string?)
I haven't had the chance to check Safari yet which also supports H.264/AAC encoding, but this shows Chrome isn't even consistent within itself, nor even with how MediaRecorder handles video and audio codec strings. Please make sure this is consistent as it makes it a headache to get the right codec string depending on the browser and API. I think MediaRecorder.isTypeSupported() should at least be returning true for "audio/mp4; codecs=mp4a.40.2".
da...@chromium.org <da...@chromium.org> #74
aac and h264 are invalid codec strings, so it does look like there are some bugs here.
da...@chromium.org <da...@chromium.org> #75
Thanks for testing!
su...@microsoft.com <su...@microsoft.com> #76
br...@audiopump.co <br...@audiopump.co> #77
Some clarifying information... AAC-LC is in fact supported with this change! The `mimeType` you should use for H.264 video and AAC-LC audio is:
```
video/mp4; codecs=avc1,mp4a.40.2
```
FFmpeg identifies the recording as:
```
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\test.mp4':
Metadata:
major_brand : mp41
minor_version : 0
compatible_brands: isomavc1
creation_time : 2024-02-02T20:34:36.000000Z
Duration: 00:00:16.49, start: 0.000000, bitrate: 1884 kb/s
Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 129 kb/s (default)
Metadata:
creation_time : 2024-02-02T20:34:36.000000Z
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709/reserved/reserved), 640x480 [SAR 1:1 DAR 4:3], 1749 kb/s, 29.30 fps, 30 tbr, 30k tbn (default)
Metadata:
creation_time : 2024-02-02T20:34:36.000000Z
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Google Chrome
```
Tested with 123.0.6277.0 (Official Build) canary (64-bit) (cohort: Clang-64), under Windows 11.
```
video/mp4; codecs=avc1,mp4a.40.2
```
FFmpeg identifies the recording as:
```
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\test.mp4':
Metadata:
major_brand : mp41
minor_version : 0
compatible_brands: isomavc1
creation_time : 2024-02-02T20:34:36.000000Z
Duration: 00:00:16.49, start: 0.000000, bitrate: 1884 kb/s
Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 129 kb/s (default)
Metadata:
creation_time : 2024-02-02T20:34:36.000000Z
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709/reserved/reserved), 640x480 [SAR 1:1 DAR 4:3], 1749 kb/s, 29.30 fps, 30 tbr, 30k tbn (default)
Metadata:
creation_time : 2024-02-02T20:34:36.000000Z
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Google Chrome
```
Tested with 123.0.6277.0 (Official Build) canary (64-bit) (cohort: Clang-64), under Windows 11.
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #78
The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src/+/57876f66c6c16a53d12d9eade0c0639879e65473
commit 57876f66c6c16a53d12d9eade0c0639879e65473
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Sat Feb 03 00:05:07 2024
Add MP4 mimetype to the existing MediaRecorder web tests.
The change adds MP4 mime type to the relevant tests
on the MediaRecorder tests where the test reached to the
muxer level.
There is a bug that block the change of 'PMediaRecorder-peerconnection.https.html', which will be handled with
bug fix of 1523375.
Bug: 1072056
Change-Id: Ie3c2c306bb454e1eb8914047137c6a5844bcdfdf
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5250746
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1255836}
[modify]https://crrev.com/57876f66c6c16a53d12d9eade0c0639879e65473/third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-start.html
[modify]https://crrev.com/57876f66c6c16a53d12d9eade0c0639879e65473/third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
[add]https://crrev.com/57876f66c6c16a53d12d9eade0c0639879e65473/third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
[modify]https://crrev.com/57876f66c6c16a53d12d9eade0c0639879e65473/third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
[add]https://crrev.com/57876f66c6c16a53d12d9eade0c0639879e65473/third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
[modify]https://crrev.com/57876f66c6c16a53d12d9eade0c0639879e65473/third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
[modify]https://crrev.com/57876f66c6c16a53d12d9eade0c0639879e65473/third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
[add]https://crrev.com/57876f66c6c16a53d12d9eade0c0639879e65473/third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
commit 57876f66c6c16a53d12d9eade0c0639879e65473
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Sat Feb 03 00:05:07 2024
Add MP4 mimetype to the existing MediaRecorder web tests.
The change adds MP4 mime type to the relevant tests
on the MediaRecorder tests where the test reached to the
muxer level.
There is a bug that block the change of 'PMediaRecorder-peerconnection.https.html', which will be handled with
bug fix of 1523375.
Bug: 1072056
Change-Id: Ie3c2c306bb454e1eb8914047137c6a5844bcdfdf
Reviewed-on:
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1255836}
[modify]
[modify]
[add]
[modify]
[add]
[modify]
[modify]
[add]
is...@google.com <is...@google.com> #79
ch...@gmail.com <ch...@gmail.com> #80
I'm not sure what's the best way to report this. There is a typo in the last commit.
https://chromium.googlesource.com/chromium/src/+/57876f66c6c16a53d12d9eade0c0639879e65473%5E%21/#F0
'aduio/mp4: codecs="mp4a.40.2"' should probably be 'audio/mp4: codecs="mp4a.40.2"'.
'aduio/mp4: codecs="mp4a.40.2"' should probably be 'audio/mp4: codecs="mp4a.40.2"'.
da...@google.com <da...@google.com> #81
Thanks for catching that! I'll send a CL.
as...@scirra.com <as...@scirra.com> #82
I found another bug with AAC audio encoding. It seems if you set the bitsPerSecond option when creating a MediaRecorder, and then record just an audio track only in AAC format, it does not produce any data (resulting in a zero size blob).
I've attached a minimal repro based on the MDN web dictaphone example (https://github.com/mdn/dom-examples/tree/main/media/web-dictaphone ) adapted to record AAC and set the bitsPerSecond option, plus some extra console logging. It produces a zero size blob. If you remove the bitsPerSecond option, it records correctly.
I've attached a minimal repro based on the MDN web dictaphone example (
gu...@gmail.com <gu...@gmail.com> #83
While we are on the topic of MediaRecorder and codecs, I'm wondering why MP3 is not supported given the attached IPR is essentially defunct now per
-https://www.iis.fraunhofer.de/en/ff/amm/consumer-electronics/mp3.html
-https://www.audioblog.iis.fraunhofer.com/mp3-software-patents-licenses
Using lamejs with AudioWorklet is slowhttps://gist.github.com/guest271314/65963d3db8b6d1790aa1b3eeea193404 .
-
-
Using lamejs with AudioWorklet is slow
su...@microsoft.com <su...@microsoft.com> #84
@ash, Windows AAC (mp4a.40.2) encoding use MediaFoudation, which supports only specific bits rate, (https://learn.microsoft.com/en-us/windows/win32/medfound/aac-encoder ), see chromium code for validation ((https://source.chromium.org/chromium/chromium/src/+/main:media/gpu/windows/mf_audio_encoder.cc;l=55?q=kSupportedBitrates&ss=chromium )
as...@scirra.com <as...@scirra.com> #85
OK, but it's still a problem, as it means existing code that specifies bitsPerSecond and works, suddenly breaks if you just change the codec.
If the bitsPerSecond parameter is provided, it should preferably be clamped to the nearest valid value, or at least ignored; the only thing it shouldn't do is silently break, which is what it does now.
If the bitsPerSecond parameter is provided, it should preferably be clamped to the nearest valid value, or at least ignored; the only thing it shouldn't do is silently break, which is what it does now.
su...@microsoft.com <su...@microsoft.com> #86
@ash, I think round to the closest to supported value probably also introduce a bug such as recorded bps is different from the requested (not exact). so, as you mention, we can fail early instead of silent failure. @dalecurtis, please let me know if you have other suggestions.
br...@audiopump.co <br...@audiopump.co> #87
There is some precedent to rounding to the nearest value. For instance, the maximum Opus bitrate in Chromium is capped at 128000 right now. If you exceed it, you get a warning on the console and it is set at 128k.
su...@microsoft.com <su...@microsoft.com> #88
@brad, yes, it looks like the audioBitsPerSecond is a hint, not a hard requirement. I've created separate tracking bug for that (https://issues.chromium.org/issues/327695863 ).
ap...@google.com <ap...@google.com> #89
Project: chromium/src
Branch: main
commit 8b14d30eb8647a87b2fdc567d5b97f3ad1021b00
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed Apr 17 18:44:44 2024
Enable MediaRecorderEnableMp4Muxer as default.
It enables the MP4 mimetype for MediaRecorder.
It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
It supports all platforms, even without proprietary OS where VP9 and Opus codecs can be used.
It updates the web platform tests.
(It is nice to have this CL first in,https://chromium-review.googlesource.com/c/chromium/src/+/5337945 )
Bug: 40127044
Change-Id: If8533997f4ee97d40085888496e5b80cc8cc7675
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5350767
Reviewed-by: Markus Handell <handellm@google.com>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1288869}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
https://chromium-review.googlesource.com/5350767
Branch: main
commit 8b14d30eb8647a87b2fdc567d5b97f3ad1021b00
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Wed Apr 17 18:44:44 2024
Enable MediaRecorderEnableMp4Muxer as default.
It enables the MP4 mimetype for MediaRecorder.
It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
It supports all platforms, even without proprietary OS where VP9 and Opus codecs can be used.
It updates the web platform tests.
(It is nice to have this CL first in,
Bug: 40127044
Change-Id: If8533997f4ee97d40085888496e5b80cc8cc7675
Reviewed-on:
Reviewed-by: Markus Handell <handellm@google.com>
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1288869}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
ap...@google.com <ap...@google.com> #90
Project: chromium/src
Branch: main
commit 2afcaa8511e3bbd5844e9bb89f77ec89f30ce7f8
Author: Nicolás Peña <npm@chromium.org>
Date: Wed Apr 17 19:55:33 2024
Revert "Enable MediaRecorderEnableMp4Muxer as default."
This reverts commit 8b14d30eb8647a87b2fdc567d5b97f3ad1021b00.
Reason for revert: introduces consistently failing test
Bug: 335477326
Original change's description:
> Enable MediaRecorderEnableMp4Muxer as default.
>
> It enables the MP4 mimetype for MediaRecorder.
>
> It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
>
> It supports all platforms, even without proprietary OS where VP9 and Opus codecs can be used.
>
> It updates the web platform tests.
>
> (It is nice to have this CL first in,https://chromium-review.googlesource.com/c/chromium/src/+/5337945 )
>
> Bug: 40127044
> Change-Id: If8533997f4ee97d40085888496e5b80cc8cc7675
> Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5350767
> Reviewed-by: Markus Handell <handellm@google.com>
> Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
> Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1288869}
Bug: 40127044
Change-Id: Ic2f235ae37585bac2c3a0d72dd377c5a8cd9439e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5462323
Owners-Override: Nicolás Peña <npm@chromium.org>
Auto-Submit: Nicolás Peña <npm@chromium.org>
Commit-Queue: Nicolás Peña <npm@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1288928}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
https://chromium-review.googlesource.com/5462323
Branch: main
commit 2afcaa8511e3bbd5844e9bb89f77ec89f30ce7f8
Author: Nicolás Peña <npm@chromium.org>
Date: Wed Apr 17 19:55:33 2024
Revert "Enable MediaRecorderEnableMp4Muxer as default."
This reverts commit 8b14d30eb8647a87b2fdc567d5b97f3ad1021b00.
Reason for revert: introduces consistently failing test
Bug: 335477326
Original change's description:
> Enable MediaRecorderEnableMp4Muxer as default.
>
> It enables the MP4 mimetype for MediaRecorder.
>
> It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
>
> It supports all platforms, even without proprietary OS where VP9 and Opus codecs can be used.
>
> It updates the web platform tests.
>
> (It is nice to have this CL first in,
>
> Bug: 40127044
> Change-Id: If8533997f4ee97d40085888496e5b80cc8cc7675
> Reviewed-on:
> Reviewed-by: Markus Handell <handellm@google.com>
> Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
> Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1288869}
Bug: 40127044
Change-Id: Ic2f235ae37585bac2c3a0d72dd377c5a8cd9439e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on:
Owners-Override: Nicolás Peña <npm@chromium.org>
Auto-Submit: Nicolás Peña <npm@chromium.org>
Commit-Queue: Nicolás Peña <npm@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1288928}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
ap...@google.com <ap...@google.com> #91
Project: chromium/src
Branch: main
commit 2d4662ba570492144efb14a40df882b9fc184d2e
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Apr 19 19:08:59 2024
Reland: Enable MP4 Muxer support.
The previous CL (https://chromium-review.googlesource.com/c/chromium/src/+/5350767 ) was reverted in the test failure of 'timeout' in the MediaRecorder-peerconnection.https.html. Newly added codecs makes the test long because it runs each test through for loop.
This fix is made by converting MediaRecorder-peerconnection.https.html test from for loop to the variant format. It passed test locally as well as CI.
Original CL message:
It enables the MP4 mimetype for MediaRecorder.
It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
It supports all platforms, even without proprietary OS where developer can use VP9 and Opus.
It updates the web platform tests.
Bug: 40127044
Bug: 335477326
Change-Id: I9681fd9855e5ef6bce8a8eb33699d0f57281b7e6
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5451600
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/main@{#1290098}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
https://chromium-review.googlesource.com/5451600
Branch: main
commit 2d4662ba570492144efb14a40df882b9fc184d2e
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri Apr 19 19:08:59 2024
Reland: Enable MP4 Muxer support.
The previous CL (
This fix is made by converting MediaRecorder-peerconnection.https.html test from for loop to the variant format. It passed test locally as well as CI.
Original CL message:
It enables the MP4 mimetype for MediaRecorder.
It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
It supports all platforms, even without proprietary OS where developer can use VP9 and Opus.
It updates the web platform tests.
Bug: 40127044
Bug: 335477326
Change-Id: I9681fd9855e5ef6bce8a8eb33699d0f57281b7e6
Reviewed-on:
Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/main@{#1290098}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
ap...@google.com <ap...@google.com> #92
Project: chromium/src
Branch: main
commit ecf60921d78212b1c3071a0295e7007e097b2416
Author: Muyao Xu <muyaoxu@google.com>
Date: Mon Apr 22 17:21:39 2024
Revert "Reland: Enable MP4 Muxer support."
This reverts commit 2d4662ba570492144efb14a40df882b9fc184d2e.
Reason for revert: the issue caused the previous revert is not fixed. WPT tests are still failing on Linux Msan.
Original change's description:
> Reland: Enable MP4 Muxer support.
>
> The previous CL (https://chromium-review.googlesource.com/c/chromium/src/+/5350767 ) was reverted in the test failure of 'timeout' in the MediaRecorder-peerconnection.https.html. Newly added codecs makes the test long because it runs each test through for loop.
>
> This fix is made by converting MediaRecorder-peerconnection.https.html test from for loop to the variant format. It passed test locally as well as CI.
>
> Original CL message:
>
> It enables the MP4 mimetype for MediaRecorder.
>
> It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
>
> It supports all platforms, even without proprietary OS where developer can use VP9 and Opus.
>
> It updates the web platform tests.
> Bug: 40127044
> Bug: 335477326
>
> Change-Id: I9681fd9855e5ef6bce8a8eb33699d0f57281b7e6
> Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5451600
> Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
> Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
> Reviewed-by: Markus Handell <handellm@google.com>
> Cr-Commit-Position: refs/heads/main@{#1290098}
Bug: 40127044
Bug: 335477326
Change-Id: I4574bb578be340ca17e9ccc455b11d8f38b2f0e2
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5472327
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Muyao Xu <muyaoxu@google.com>
Reviewed-by: Muyao Xu <muyaoxu@google.com>
Commit-Queue: Muyao Xu <muyaoxu@google.com>
Owners-Override: Muyao Xu <muyaoxu@google.com>
Cr-Commit-Position: refs/heads/main@{#1290741}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
https://chromium-review.googlesource.com/5472327
Branch: main
commit ecf60921d78212b1c3071a0295e7007e097b2416
Author: Muyao Xu <muyaoxu@google.com>
Date: Mon Apr 22 17:21:39 2024
Revert "Reland: Enable MP4 Muxer support."
This reverts commit 2d4662ba570492144efb14a40df882b9fc184d2e.
Reason for revert: the issue caused the previous revert is not fixed. WPT tests are still failing on Linux Msan.
Original change's description:
> Reland: Enable MP4 Muxer support.
>
> The previous CL (
>
> This fix is made by converting MediaRecorder-peerconnection.https.html test from for loop to the variant format. It passed test locally as well as CI.
>
> Original CL message:
>
> It enables the MP4 mimetype for MediaRecorder.
>
> It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
>
> It supports all platforms, even without proprietary OS where developer can use VP9 and Opus.
>
> It updates the web platform tests.
> Bug: 40127044
> Bug: 335477326
>
> Change-Id: I9681fd9855e5ef6bce8a8eb33699d0f57281b7e6
> Reviewed-on:
> Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
> Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
> Reviewed-by: Markus Handell <handellm@google.com>
> Cr-Commit-Position: refs/heads/main@{#1290098}
Bug: 40127044
Bug: 335477326
Change-Id: I4574bb578be340ca17e9ccc455b11d8f38b2f0e2
Reviewed-on:
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Muyao Xu <muyaoxu@google.com>
Reviewed-by: Muyao Xu <muyaoxu@google.com>
Commit-Queue: Muyao Xu <muyaoxu@google.com>
Owners-Override: Muyao Xu <muyaoxu@google.com>
Cr-Commit-Position: refs/heads/main@{#1290741}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
A third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
ap...@google.com <ap...@google.com> #93
Project: chromium/src
Branch: main
commit 6b87c2f46fb37b44b20cf427c0ffac971d0ac6de
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri May 03 13:02:47 2024
Reland Enable MP4 Muxer support after MSAN fix.
This is a reland ofhttps://chromium-review.googlesource.com/c/chromium/src/+/5451600 .
The failed bug shows that there is an uninitialized heap in the BoxByteStream::buffer_, but doing many different ways for init of the buffer_ does not address the bug.
I could finally built MSAN Linux where it shows different MSAN failure, which is about this CL. Once these are fixed, no more MSAN issue.
Original change's description:
> Reland: Enable MP4 Muxer support.
>
> The previous CL (https://chromium-review.googlesource.com/c/chromium/src/+/5350767 ) was reverted in the test failure of 'timeout' in the MediaRecorder-peerconnection.https.html. Newly added codecs makes the test long because it runs each test through for loop.
>
> This fix is made by converting MediaRecorder-peerconnection.https.html test from for loop to the variant format. It passed test locally as well as CI.
>
> Original CL message:
>
> It enables the MP4 mimetype for MediaRecorder.
>
> It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
>
> It supports all platforms, even without proprietary OS where developer can use VP9 and Opus.
>
> It updates the web platform tests.
> Bug: 40127044
> Bug: 335477326
>
> Change-Id: I9681fd9855e5ef6bce8a8eb33699d0f57281b7e6
> Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5451600
> Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
> Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
> Reviewed-by: Markus Handell <handellm@google.com>
> Cr-Commit-Position: refs/heads/main@{#1290098}
Bug: 40127044
Bug: 335477326
Change-Id: I736f3b8b7ed3c3d7a1c33a21b17b6581165ad345
Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/5472474
Reviewed-by: Markus Handell <handellm@google.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/main@{#1296031}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
https://chromium-review.googlesource.com/5472474
Branch: main
commit 6b87c2f46fb37b44b20cf427c0ffac971d0ac6de
Author: Sunggook Chue <sunggch@microsoft.com>
Date: Fri May 03 13:02:47 2024
Reland Enable MP4 Muxer support after MSAN fix.
This is a reland of
The failed bug shows that there is an uninitialized heap in the BoxByteStream::buffer_, but doing many different ways for init of the buffer_ does not address the bug.
I could finally built MSAN Linux where it shows different MSAN failure, which is about this CL. Once these are fixed, no more MSAN issue.
Original change's description:
> Reland: Enable MP4 Muxer support.
>
> The previous CL (
>
> This fix is made by converting MediaRecorder-peerconnection.https.html test from for loop to the variant format. It passed test locally as well as CI.
>
> Original CL message:
>
> It enables the MP4 mimetype for MediaRecorder.
>
> It supports codecs of h264 (avc1), aac (mp4a.40.2), vp9, Opus. The default is vp9 and Opus.
>
> It supports all platforms, even without proprietary OS where developer can use VP9 and Opus.
>
> It updates the web platform tests.
> Bug: 40127044
> Bug: 335477326
>
> Change-Id: I9681fd9855e5ef6bce8a8eb33699d0f57281b7e6
> Reviewed-on:
> Commit-Queue: Sunggook Chue <sunggch@microsoft.com>
> Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
> Reviewed-by: Markus Handell <handellm@google.com>
> Cr-Commit-Position: refs/heads/main@{#1290098}
Bug: 40127044
Bug: 335477326
Change-Id: I736f3b8b7ed3c3d7a1c33a21b17b6581165ad345
Reviewed-on:
Reviewed-by: Markus Handell <handellm@google.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Markus Handell <handellm@google.com>
Cr-Commit-Position: refs/heads/main@{#1296031}
M media/muxers/mp4_muxer_delegate.cc
M third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-mimetype.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-pause-resume.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html
M third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop.html
D third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt
su...@microsoft.com <su...@microsoft.com>
as...@scirra.com <as...@scirra.com> #94
This looks like it shipped in M126 (great to see it shipping!) but it doesn't appear on the chromestatus.com roadmap for M126 so I didn't realize this was shipping yet: https://chromestatus.com/roadmap
Perhaps an oversight?
Perhaps an oversight?
da...@chromium.org <da...@chromium.org> #95
Thanks. I fixed the labels so it shows up there!
su...@microsoft.com <su...@microsoft.com> #96
dalecurtis@, Thanks.
mi...@tella.com <mi...@tella.com> #97
I'm having trouble actually recording a video with video/mp4;codecs=avc1,mp4a.40.2 mimetype. The audio records fine but the video has errors like "Invalid NAL unit size (1107309193 > 160221)." ffplay can play it but VLC can't.
Reproduction:
- Go to
https://qzj3nv.csb.app/ - Click Share screen
- Click Record, record ~10s
- Click Stop, click download
- Inspect with ffprobe
ffprobe "test (2).mp4"
ffprobe version 7.0.1 Copyright (c) 2007-2024 the FFmpeg developers
built with Apple clang version 15.0.0 (clang-1500.3.9.4)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.0.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
[h264 @ 0x128606140] sps_id 32 out of range
[h264 @ 0x128606140] Invalid NAL unit size (1107309193 > 86534).
[h264 @ 0x128606140] missing picture in access unit with size 86543
[h264 @ 0x128606140] illegal memory management control operation 7
[h264 @ 0x128606140] illegal memory management control operation 8
[h264 @ 0x128606140] illegal memory management control operation 9
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test (2).mp4':
Metadata:
major_brand : mp41
minor_version : 0
compatible_brands: isomavc1
creation_time : 2024-07-02T08:32:55.000000Z
Duration: 00:00:05.10, start: 0.000000, bitrate: 636 kb/s
Stream #0:0[0x1](und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 2056x1328, 632 kb/s, SAR 1:1 DAR 257:166, 29.18 fps, 29.92 tbr, 30k tbn
Metadata:
creation_time : 2024-07-02T08:32:55.000000Z
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : AVC1 Coding
gu...@gmail.com <gu...@gmail.com> #98
mpv plays the video.
Firefox 129 reports
"Video can't be played because the file is corrupt".
da...@chromium.org <da...@chromium.org> #99
Please follow
as...@scirra.com <as...@scirra.com> #100
Recording MP4 on Android seems to crash the tab. See issue 353167439 .
Description
Chrome Version : 80.0.3987.163https://codepen.io/Fyrd/pen/LYpZYBM?editors=1010
URLs (if applicable) :
Other browsers tested:
Add OK or FAIL, along with the version, after other browsers where you
have tested this issue:
Safari: OK (sort of, it's still an Experimental Feature in 13.1, but when enabled export defaults to video/mp4)
Firefox: FAIL
Edge: FAIL
What steps will reproduce the problem?
(1) Create a MediaRecorder with options {mimeType: "video/mp4"}
What is the expected result?
A valid video/mp4 file should be generated
What happens instead?
The following exception: "Failed to construct 'MediaRecorder': Failed to initialize native MediaRecorder the type provided (video/mp4) is not supported"
Please provide any additional information below. Attach a screenshot if
possible.
"video/mp4" is one of the most popular video types. It would save us a lot of trouble if Chrome supported encoding in this format in addition to the currently supported video/webm format.