| Index: webrtc/media/base/videoadapter.h
|
| diff --git a/webrtc/media/base/videoadapter.h b/webrtc/media/base/videoadapter.h
|
| index 50b7d4c4be19253bb2fa74d996f594a590b9b38a..2db0ada271324f5b61350ef0ca508d4d8856fdbe 100644
|
| --- a/webrtc/media/base/videoadapter.h
|
| +++ b/webrtc/media/base/videoadapter.h
|
| @@ -32,12 +32,23 @@ class VideoAdapter {
|
| // interval.
|
| void SetExpectedInputFrameInterval(int64_t interval);
|
|
|
| - // Return the adapted resolution given the input resolution. The returned
|
| - // resolution will be 0x0 if the frame should be dropped.
|
| - VideoFormat AdaptFrameResolution(int in_width, int in_height);
|
| + // Return the adapted resolution given the input resolution. The input
|
| + // resolution should first be cropped to the specified resolution, and then
|
| + // scaled to the final output resolution. The output resolution will be 0x0 if
|
| + // the frame should be dropped.
|
| + void AdaptFrameResolution(int in_width,
|
| + int in_height,
|
| + int* cropped_width,
|
| + int* cropped_height,
|
| + int* out_width,
|
| + int* out_height);
|
|
|
| // Requests the output frame size and frame interval from
|
| - // |AdaptFrameResolution| to not be larger than |format|.
|
| + // |AdaptFrameResolution| to not be larger than |format|. Also, the input
|
| + // frame size will be cropped to match the requested aspect ratio. The
|
| + // requested aspect ratio is orientation agnostic and will be adjusted to
|
| + // maintain the input orientation, so it doesn't matter if e.g. 1280x720 or
|
| + // 720x1280 is requested.
|
| void OnOutputFormatRequest(const VideoFormat& format);
|
|
|
| // Requests the output frame size from |AdaptFrameResolution| to not have
|
| @@ -46,28 +57,22 @@ class VideoAdapter {
|
| void OnResolutionRequest(rtc::Optional<int> max_pixel_count,
|
| rtc::Optional<int> max_pixel_count_step_up);
|
|
|
| - const VideoFormat& input_format() const;
|
| -
|
| private:
|
| - void SetInputFormat(const VideoFormat& format);
|
| - bool Adapt(int max_num_pixels, int max_pixel_count_step_up);
|
| -
|
| - VideoFormat input_format_;
|
| - VideoFormat output_format_;
|
| - int output_num_pixels_;
|
| int frames_in_; // Number of input frames.
|
| int frames_out_; // Number of output frames.
|
| int frames_scaled_; // Number of frames scaled.
|
| int adaption_changes_; // Number of changes in scale factor.
|
| int previous_width_; // Previous adapter output width.
|
| int previous_height_; // Previous adapter output height.
|
| - int64_t interval_next_frame_;
|
| + int input_interval_ GUARDED_BY(critical_section_);
|
| + int64_t interval_next_frame_ GUARDED_BY(critical_section_);
|
|
|
| // Max number of pixels requested via calls to OnOutputFormatRequest,
|
| // OnResolutionRequest respectively.
|
| // The adapted output format is the minimum of these.
|
| - int format_request_max_pixel_count_;
|
| - int resolution_request_max_pixel_count_;
|
| + rtc::Optional<VideoFormat> requested_format_ GUARDED_BY(critical_section_);
|
| + int resolution_request_max_pixel_count_ GUARDED_BY(critical_section_);
|
| + int resolution_request_max_pixel_count_step_up_ GUARDED_BY(critical_section_);
|
|
|
| // The critical section to protect the above variables.
|
| rtc::CriticalSection critical_section_;
|
|
|