Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5204ad0a authored by Ray Essick's avatar Ray Essick Committed by Android (Google) Code Review
Browse files

Merge "Integrate API Council feedback into Media Metrics APIs"

parents 9ed74a81 f2d0e40b
Loading
Loading
Loading
Loading
+67 −4
Original line number Diff line number Diff line
@@ -21827,7 +21827,7 @@ package android.media {
    method public deprecated java.nio.ByteBuffer[] getInputBuffers();
    method public final android.media.MediaFormat getInputFormat();
    method public android.media.Image getInputImage(int);
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public final java.lang.String getName();
    method public java.nio.ByteBuffer getOutputBuffer(int);
    method public deprecated java.nio.ByteBuffer[] getOutputBuffers();
@@ -22379,7 +22379,7 @@ package android.media {
    method public boolean advance();
    method public long getCachedDuration();
    method public android.media.DrmInitData getDrmInitData();
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public java.util.Map<java.util.UUID, byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo);
    method public int getSampleFlags();
@@ -22634,6 +22634,69 @@ package android.media {
    field public static final int OPTION_PREVIOUS_SYNC = 0; // 0x0
  }
  public final class MediaMetricsSet {
    method public double getDouble(java.lang.String, double);
    method public int getInt(java.lang.String, int);
    method public long getLong(java.lang.String, long);
    method public java.lang.String getString(java.lang.String, java.lang.String);
    method public boolean isEmpty();
    method public java.util.Set<java.lang.String> keySet();
    method public int size();
  }
  public static final class MediaMetricsSet.MediaCodec {
    field public static final java.lang.String KEY_CODEC = "android.media.mediacodec.codec";
    field public static final java.lang.String KEY_ENCODER = "android.media.mediacodec.encoder";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediacodec.height";
    field public static final java.lang.String KEY_MIME = "android.media.mediacodec.mime";
    field public static final java.lang.String KEY_MODE = "android.media.mediacodec.mode";
    field public static final java.lang.String KEY_ROTATION = "android.media.mediacodec.rotation";
    field public static final java.lang.String KEY_SECURE = "android.media.mediacodec.secure";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediacodec.width";
    field public static final java.lang.String MODE_AUDIO = "audio";
    field public static final java.lang.String MODE_VIDEO = "video";
  }
  public static final class MediaMetricsSet.MediaExtractor {
    field public static final java.lang.String KEY_FORMAT = "android.media.mediaextractor.fmt";
    field public static final java.lang.String KEY_MIME = "android.media.mediaextractor.mime";
    field public static final java.lang.String KEY_TRACKS = "android.media.mediaextractor.ntrk";
  }
  public static final class MediaMetricsSet.MediaPlayer {
    field public static final java.lang.String KEY_CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
    field public static final java.lang.String KEY_CODEC_VIDEO = "android.media.mediaplayer.video.codec";
    field public static final java.lang.String KEY_DURATION = "android.media.mediaplayer.durationMs";
    field public static final java.lang.String KEY_ERRORS = "android.media.mediaplayer.err";
    field public static final java.lang.String KEY_ERROR_CODE = "android.media.mediaplayer.errcode";
    field public static final java.lang.String KEY_FRAMES = "android.media.mediaplayer.frames";
    field public static final java.lang.String KEY_FRAMES_DROPPED = "android.media.mediaplayer.dropped";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediaplayer.height";
    field public static final java.lang.String KEY_MIME_AUDIO = "android.media.mediaplayer.audio.mime";
    field public static final java.lang.String KEY_MIME_VIDEO = "android.media.mediaplayer.video.mime";
    field public static final java.lang.String KEY_PLAYING = "android.media.mediaplayer.playingMs";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediaplayer.width";
  }
  public static final class MediaMetricsSet.MediaRecorder {
    field public static final java.lang.String KEY_AUDIO_BITRATE = "android.media.mediarecorder.audio-bitrate";
    field public static final java.lang.String KEY_AUDIO_CHANNELS = "android.media.mediarecorder.audio-channels";
    field public static final java.lang.String KEY_AUDIO_SAMPLERATE = "android.media.mediarecorder.audio-samplerate";
    field public static final java.lang.String KEY_AUDIO_TIMESCALE = "android.media.mediarecorder.audio-timescale";
    field public static final java.lang.String KEY_CAPTURE_FPS = "android.media.mediarecorder.capture-fps";
    field public static final java.lang.String KEY_CAPTURE_FPS_ENABLE = "android.media.mediarecorder.capture-fpsenable";
    field public static final java.lang.String KEY_FRAMERATE = "android.media.mediarecorder.frame-rate";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediarecorder.height";
    field public static final java.lang.String KEY_MOVIE_TIMESCALE = "android.media.mediarecorder.movie-timescale";
    field public static final java.lang.String KEY_ROTATION = "android.media.mediarecorder.rotation";
    field public static final java.lang.String KEY_VIDEO_BITRATE = "android.media.mediarecorder.video-bitrate";
    field public static final java.lang.String KEY_VIDEO_IFRAME_INTERVAL = "android.media.mediarecorder.video-iframe-interval";
    field public static final java.lang.String KEY_VIDEO_LEVEL = "android.media.mediarecorder.video-encoder-level";
    field public static final java.lang.String KEY_VIDEO_PROFILE = "android.media.mediarecorder.video-encoder-profile";
    field public static final java.lang.String KEY_VIDEO_TIMESCALE = "android.media.mediarecorder.video-timescale";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediarecorder.width";
  }
  public final class MediaMuxer {
    ctor public MediaMuxer(java.lang.String, int) throws java.io.IOException;
    ctor public MediaMuxer(java.io.FileDescriptor, int) throws java.io.IOException;
@@ -22674,7 +22737,7 @@ package android.media {
    method public java.lang.String getDrmPropertyString(java.lang.String) throws android.media.MediaPlayer.NoDrmSchemeException;
    method public int getDuration();
    method public android.media.MediaDrm.KeyRequest getKeyRequest(byte[], java.lang.String, int, java.util.Map<java.lang.String, java.lang.String>) throws android.media.MediaPlayer.NoDrmSchemeException;
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public android.media.PlaybackParams getPlaybackParams();
    method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
    method public android.media.SyncParams getSyncParams();
@@ -22842,7 +22905,7 @@ package android.media {
    ctor public MediaRecorder();
    method public static final int getAudioSourceMax();
    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public android.view.Surface getSurface();
    method public void pause() throws java.lang.IllegalStateException;
    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
+67 −4
Original line number Diff line number Diff line
@@ -23623,7 +23623,7 @@ package android.media {
    method public deprecated java.nio.ByteBuffer[] getInputBuffers();
    method public final android.media.MediaFormat getInputFormat();
    method public android.media.Image getInputImage(int);
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public final java.lang.String getName();
    method public java.nio.ByteBuffer getOutputBuffer(int);
    method public deprecated java.nio.ByteBuffer[] getOutputBuffers();
@@ -24175,7 +24175,7 @@ package android.media {
    method public boolean advance();
    method public long getCachedDuration();
    method public android.media.DrmInitData getDrmInitData();
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public java.util.Map<java.util.UUID, byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo);
    method public int getSampleFlags();
@@ -24430,6 +24430,69 @@ package android.media {
    field public static final int OPTION_PREVIOUS_SYNC = 0; // 0x0
  }
  public final class MediaMetricsSet {
    method public double getDouble(java.lang.String, double);
    method public int getInt(java.lang.String, int);
    method public long getLong(java.lang.String, long);
    method public java.lang.String getString(java.lang.String, java.lang.String);
    method public boolean isEmpty();
    method public java.util.Set<java.lang.String> keySet();
    method public int size();
  }
  public static final class MediaMetricsSet.MediaCodec {
    field public static final java.lang.String KEY_CODEC = "android.media.mediacodec.codec";
    field public static final java.lang.String KEY_ENCODER = "android.media.mediacodec.encoder";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediacodec.height";
    field public static final java.lang.String KEY_MIME = "android.media.mediacodec.mime";
    field public static final java.lang.String KEY_MODE = "android.media.mediacodec.mode";
    field public static final java.lang.String KEY_ROTATION = "android.media.mediacodec.rotation";
    field public static final java.lang.String KEY_SECURE = "android.media.mediacodec.secure";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediacodec.width";
    field public static final java.lang.String MODE_AUDIO = "audio";
    field public static final java.lang.String MODE_VIDEO = "video";
  }
  public static final class MediaMetricsSet.MediaExtractor {
    field public static final java.lang.String KEY_FORMAT = "android.media.mediaextractor.fmt";
    field public static final java.lang.String KEY_MIME = "android.media.mediaextractor.mime";
    field public static final java.lang.String KEY_TRACKS = "android.media.mediaextractor.ntrk";
  }
  public static final class MediaMetricsSet.MediaPlayer {
    field public static final java.lang.String KEY_CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
    field public static final java.lang.String KEY_CODEC_VIDEO = "android.media.mediaplayer.video.codec";
    field public static final java.lang.String KEY_DURATION = "android.media.mediaplayer.durationMs";
    field public static final java.lang.String KEY_ERRORS = "android.media.mediaplayer.err";
    field public static final java.lang.String KEY_ERROR_CODE = "android.media.mediaplayer.errcode";
    field public static final java.lang.String KEY_FRAMES = "android.media.mediaplayer.frames";
    field public static final java.lang.String KEY_FRAMES_DROPPED = "android.media.mediaplayer.dropped";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediaplayer.height";
    field public static final java.lang.String KEY_MIME_AUDIO = "android.media.mediaplayer.audio.mime";
    field public static final java.lang.String KEY_MIME_VIDEO = "android.media.mediaplayer.video.mime";
    field public static final java.lang.String KEY_PLAYING = "android.media.mediaplayer.playingMs";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediaplayer.width";
  }
  public static final class MediaMetricsSet.MediaRecorder {
    field public static final java.lang.String KEY_AUDIO_BITRATE = "android.media.mediarecorder.audio-bitrate";
    field public static final java.lang.String KEY_AUDIO_CHANNELS = "android.media.mediarecorder.audio-channels";
    field public static final java.lang.String KEY_AUDIO_SAMPLERATE = "android.media.mediarecorder.audio-samplerate";
    field public static final java.lang.String KEY_AUDIO_TIMESCALE = "android.media.mediarecorder.audio-timescale";
    field public static final java.lang.String KEY_CAPTURE_FPS = "android.media.mediarecorder.capture-fps";
    field public static final java.lang.String KEY_CAPTURE_FPS_ENABLE = "android.media.mediarecorder.capture-fpsenable";
    field public static final java.lang.String KEY_FRAMERATE = "android.media.mediarecorder.frame-rate";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediarecorder.height";
    field public static final java.lang.String KEY_MOVIE_TIMESCALE = "android.media.mediarecorder.movie-timescale";
    field public static final java.lang.String KEY_ROTATION = "android.media.mediarecorder.rotation";
    field public static final java.lang.String KEY_VIDEO_BITRATE = "android.media.mediarecorder.video-bitrate";
    field public static final java.lang.String KEY_VIDEO_IFRAME_INTERVAL = "android.media.mediarecorder.video-iframe-interval";
    field public static final java.lang.String KEY_VIDEO_LEVEL = "android.media.mediarecorder.video-encoder-level";
    field public static final java.lang.String KEY_VIDEO_PROFILE = "android.media.mediarecorder.video-encoder-profile";
    field public static final java.lang.String KEY_VIDEO_TIMESCALE = "android.media.mediarecorder.video-timescale";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediarecorder.width";
  }
  public final class MediaMuxer {
    ctor public MediaMuxer(java.lang.String, int) throws java.io.IOException;
    ctor public MediaMuxer(java.io.FileDescriptor, int) throws java.io.IOException;
@@ -24470,7 +24533,7 @@ package android.media {
    method public java.lang.String getDrmPropertyString(java.lang.String) throws android.media.MediaPlayer.NoDrmSchemeException;
    method public int getDuration();
    method public android.media.MediaDrm.KeyRequest getKeyRequest(byte[], java.lang.String, int, java.util.Map<java.lang.String, java.lang.String>) throws android.media.MediaPlayer.NoDrmSchemeException;
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public android.media.PlaybackParams getPlaybackParams();
    method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
    method public android.media.SyncParams getSyncParams();
@@ -24638,7 +24701,7 @@ package android.media {
    ctor public MediaRecorder();
    method public static final int getAudioSourceMax();
    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public android.view.Surface getSurface();
    method public void pause() throws java.lang.IllegalStateException;
    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
+67 −4
Original line number Diff line number Diff line
@@ -21928,7 +21928,7 @@ package android.media {
    method public deprecated java.nio.ByteBuffer[] getInputBuffers();
    method public final android.media.MediaFormat getInputFormat();
    method public android.media.Image getInputImage(int);
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public final java.lang.String getName();
    method public java.nio.ByteBuffer getOutputBuffer(int);
    method public deprecated java.nio.ByteBuffer[] getOutputBuffers();
@@ -22480,7 +22480,7 @@ package android.media {
    method public boolean advance();
    method public long getCachedDuration();
    method public android.media.DrmInitData getDrmInitData();
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public java.util.Map<java.util.UUID, byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo);
    method public int getSampleFlags();
@@ -22735,6 +22735,69 @@ package android.media {
    field public static final int OPTION_PREVIOUS_SYNC = 0; // 0x0
  }
  public final class MediaMetricsSet {
    method public double getDouble(java.lang.String, double);
    method public int getInt(java.lang.String, int);
    method public long getLong(java.lang.String, long);
    method public java.lang.String getString(java.lang.String, java.lang.String);
    method public boolean isEmpty();
    method public java.util.Set<java.lang.String> keySet();
    method public int size();
  }
  public static final class MediaMetricsSet.MediaCodec {
    field public static final java.lang.String KEY_CODEC = "android.media.mediacodec.codec";
    field public static final java.lang.String KEY_ENCODER = "android.media.mediacodec.encoder";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediacodec.height";
    field public static final java.lang.String KEY_MIME = "android.media.mediacodec.mime";
    field public static final java.lang.String KEY_MODE = "android.media.mediacodec.mode";
    field public static final java.lang.String KEY_ROTATION = "android.media.mediacodec.rotation";
    field public static final java.lang.String KEY_SECURE = "android.media.mediacodec.secure";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediacodec.width";
    field public static final java.lang.String MODE_AUDIO = "audio";
    field public static final java.lang.String MODE_VIDEO = "video";
  }
  public static final class MediaMetricsSet.MediaExtractor {
    field public static final java.lang.String KEY_FORMAT = "android.media.mediaextractor.fmt";
    field public static final java.lang.String KEY_MIME = "android.media.mediaextractor.mime";
    field public static final java.lang.String KEY_TRACKS = "android.media.mediaextractor.ntrk";
  }
  public static final class MediaMetricsSet.MediaPlayer {
    field public static final java.lang.String KEY_CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
    field public static final java.lang.String KEY_CODEC_VIDEO = "android.media.mediaplayer.video.codec";
    field public static final java.lang.String KEY_DURATION = "android.media.mediaplayer.durationMs";
    field public static final java.lang.String KEY_ERRORS = "android.media.mediaplayer.err";
    field public static final java.lang.String KEY_ERROR_CODE = "android.media.mediaplayer.errcode";
    field public static final java.lang.String KEY_FRAMES = "android.media.mediaplayer.frames";
    field public static final java.lang.String KEY_FRAMES_DROPPED = "android.media.mediaplayer.dropped";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediaplayer.height";
    field public static final java.lang.String KEY_MIME_AUDIO = "android.media.mediaplayer.audio.mime";
    field public static final java.lang.String KEY_MIME_VIDEO = "android.media.mediaplayer.video.mime";
    field public static final java.lang.String KEY_PLAYING = "android.media.mediaplayer.playingMs";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediaplayer.width";
  }
  public static final class MediaMetricsSet.MediaRecorder {
    field public static final java.lang.String KEY_AUDIO_BITRATE = "android.media.mediarecorder.audio-bitrate";
    field public static final java.lang.String KEY_AUDIO_CHANNELS = "android.media.mediarecorder.audio-channels";
    field public static final java.lang.String KEY_AUDIO_SAMPLERATE = "android.media.mediarecorder.audio-samplerate";
    field public static final java.lang.String KEY_AUDIO_TIMESCALE = "android.media.mediarecorder.audio-timescale";
    field public static final java.lang.String KEY_CAPTURE_FPS = "android.media.mediarecorder.capture-fps";
    field public static final java.lang.String KEY_CAPTURE_FPS_ENABLE = "android.media.mediarecorder.capture-fpsenable";
    field public static final java.lang.String KEY_FRAMERATE = "android.media.mediarecorder.frame-rate";
    field public static final java.lang.String KEY_HEIGHT = "android.media.mediarecorder.height";
    field public static final java.lang.String KEY_MOVIE_TIMESCALE = "android.media.mediarecorder.movie-timescale";
    field public static final java.lang.String KEY_ROTATION = "android.media.mediarecorder.rotation";
    field public static final java.lang.String KEY_VIDEO_BITRATE = "android.media.mediarecorder.video-bitrate";
    field public static final java.lang.String KEY_VIDEO_IFRAME_INTERVAL = "android.media.mediarecorder.video-iframe-interval";
    field public static final java.lang.String KEY_VIDEO_LEVEL = "android.media.mediarecorder.video-encoder-level";
    field public static final java.lang.String KEY_VIDEO_PROFILE = "android.media.mediarecorder.video-encoder-profile";
    field public static final java.lang.String KEY_VIDEO_TIMESCALE = "android.media.mediarecorder.video-timescale";
    field public static final java.lang.String KEY_WIDTH = "android.media.mediarecorder.width";
  }
  public final class MediaMuxer {
    ctor public MediaMuxer(java.lang.String, int) throws java.io.IOException;
    ctor public MediaMuxer(java.io.FileDescriptor, int) throws java.io.IOException;
@@ -22775,7 +22838,7 @@ package android.media {
    method public java.lang.String getDrmPropertyString(java.lang.String) throws android.media.MediaPlayer.NoDrmSchemeException;
    method public int getDuration();
    method public android.media.MediaDrm.KeyRequest getKeyRequest(byte[], java.lang.String, int, java.util.Map<java.lang.String, java.lang.String>) throws android.media.MediaPlayer.NoDrmSchemeException;
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public android.media.PlaybackParams getPlaybackParams();
    method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
    method public android.media.SyncParams getSyncParams();
@@ -22943,7 +23006,7 @@ package android.media {
    ctor public MediaRecorder();
    method public static final int getAudioSourceMax();
    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
    method public android.os.Bundle getMetrics();
    method public android.media.MediaMetricsSet getMetrics();
    method public android.view.Surface getSurface();
    method public void pause() throws java.lang.IllegalStateException;
    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
+13 −49
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.graphics.ImageFormat;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.media.MediaCodecInfo.CodecCapabilities;
import android.media.MediaMetricsSet;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -3186,59 +3187,22 @@ final public class MediaCodec {
    public native final String getName();

    /**
     *  Returns Analytics/Metrics data about the current content being
     *
     * @return a Bundle containing the set of attributes and values available
     * for the media being handled by this instance of MediaCodec
     *
     *  <table style="width: 0%">
     *   <thead>
     *    <tr>
     *     <th>Key</th>
     *     <th>Type</th>
     *     <th>Description</th>
     *    </tr>
     *   </thead>
     *   <tbody>
     *    <tr>
     *     <td>{@code "codec"}</td>
     *     <td>String</td>
     *     <td>Identifies the particular codec in use</td>
     *    </tr><tr>
     *     <td>{@code "mime"}</td>
     *     <td>String</td>
     *     <td>Mime type of the media being encoded/decoded</td>
     *    </tr><tr>
     *     <td>{@code "mode"}</td>
     *     <td>String</td>
     *     <td>"Audio" or "Video"</td>
     *    </tr><tr>
     *     <td>{@code "secure"}</td>
     *     <td>Integer</td>
     *     <td>Indicates whether the code is operating on secure content and
     *         may also use capabilities in android.media.MediaCrypto</td>
     *    </tr><tr>
     *     <td>{@code "height"}</td>
     *     <td>Integer</td>
     *     <td>Height (pixels); valid only when mode=video</td>
     *    </tr><tr>
     *     <td>{@code "width"}</td>
     *     <td>Integer</td>
     *     <td>Width (pixels); valid only when mode=video</td>
     *    </tr><tr>
     *     <td>{@code "rotation"}</td>
     *     <td>Integer</td>
     *     <td>rotation (degrees) to orient the video onto the target surface;
     *         valid only when mode=video. Note there may be additional
     *         rotations applied when the surface is mapped to the screen.</td>
     *    </tr>
     *   </tbody>
     *  </table>
     *  Return Metrics data about the current codec instance.
     *
     * @return a MediaMetricsSet containing the set of attributes and values
     * available for the media being handled by this instance of MediaCodec
     * The attributes are descibed in {@link MediaMetricsSet.MediaCodec}.
     *
     *  Additional fields specific to individual codecs will also appear in
     *  Additional vendor-specific fields may also be present in
     *  the return value.
     */
    public native Bundle getMetrics();
    public MediaMetricsSet getMetrics() {
        Bundle bundle = native_getMetrics();
	MediaMetricsSet mSet = new MediaMetricsSet(bundle);
	return mSet;
    }

    private native Bundle native_getMetrics();

    /**
     * Change a video encoder's target bitrate on the fly. The value is an
+14 −30

File changed.

Preview size limit exceeded, changes collapsed.

Loading