Comments (4)
I like the idea of the output of the decoder (DecodedAudioPacket or DecodedVideoFrame) having a few useful things like .decodeTime . Similarly for EncodedVideoFrame and .encodeTime and .qp.
from webcodecs.
Per-frame encode/decode durations. Real-time applications may use this to decrease the quality of the media stream if the encoder or decoder is taking too long.
I think knowing about "too long" cases may be possible without these statistics. The app can observe the delta between pushing frames in and getting corresponding (same timestamp) frames out. Making this observation in javascript is probably superior to providing the codecs view of the world, as the codec doesn't know how much delay the app may encounter between the codec being "done" with the frame and the app actually receiving it from the output callback.
Per-frame quality information. For example, getting the QP value of a video frame.
My naive model is that QP will be an input encoder.configure(), and that every output would then have that QP (making it not interesting to add as an attribute). Is that a reasonable model?
from webcodecs.
My naive model is that QP will be an input encoder.configure(), and that every output would then have that QP (making it not interesting to add as an attribute). Is that a reasonable model?
Not really. For a really common example, using x264 in CRF mode (which is recommended: "This is the recommended rate control mode for most uses. "
) is essentially changing the QP per frame. Here is a good article I've bookmarked that talks about it in a bit more depth: https://slhck.info/video/2017/02/24/crf-guide.html#crf-versus-constant-qp (direct link to the section about this, but the rest is interesting).
from webcodecs.
Thanks @padenot, I'll give that a read. For QP discussion, we have #56. Happy to have separate issues for the codec specific needs.
For the original issue, we haven't had demand for such stats from actual users and I expect the measurements I outlined are good enough if not better. Given ongoing privacy discussion about timing attacks, I vote to close this ancient issue until we have have motivating use cases. Please feel free to reopen if there's more to discuss.
from webcodecs.
Related Issues (20)
- Support for AV1 switch frames HOT 5
- Fatal encoding/decoding error on Windows 10/11 HOT 2
- Why is isTypeSupported() promise-based? HOT 8
- Receiving Uncompressed Webcam Data without Browser Compression HOT 5
- After how many decode should the codec process the frames? HOT 10
- Clarify `reset()` behaviour when multiple things are being output HOT 3
- key-frame request handling when scalability mode is not L1T1 for encoder HOT 6
- Clarify the `Clone configuration` algorithm HOT 4
- Figure out what should happen to the unused bits in 10-bits and 12-bits pixel formats
- Rephrase non-normative uses of RFC2119 keywords HOT 1
- Web Audio API compatibility HOT 1
- Assign VideoFrame resource to [[resource reference]] in BufferSource constructor HOT 4
- VideoFrameBufferInit metadata field missing
- sourceWidthBytes from sampleWidth, not sampleHeight
- Vekil
- Sporadic build failures HOT 4
- Define scope for w3c candidate recommendation HOT 3
- Candidate Recommendation tracking issue
- VideoFrame copyTo() behavior with non-RGBA/RGBX/BGRA/BGRX formats HOT 1
- VideoPixelFormat enum values do not follow casing rule guidelines HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from webcodecs.