IWYU modules/video_coding/codecs/h264/ using find modules/video_coding/codecs/h264/ -name "*.h" -o -name "*.cc" | xargs tools_webrtc/iwyu/apply-include-cleaner followed by tools_webrtc/gn_check_autofix.py -C out/Default followed by git cl format and manual reordering to respect the H264 compile guards. Also ignore the libavcodec/libavutil includes and suppress them. This previously caused a revert: https://webrtc-review.googlesource.com/c/src/+/385820 Bug: webrtc:42226242 Change-Id: Ib8ace06b2860073d5d77e6a4e79fc8c79188b4b7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/400580 Reviewed-by: Sergey Silkin <ssilkin@webrtc.org> Commit-Queue: Philipp Hancke <phancke@meta.com> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/main@{#45165}
diff --git a/modules/video_coding/codecs/h264/h264.cc b/modules/video_coding/codecs/h264/h264.cc index ffee2af..919a80c 100644 --- a/modules/video_coding/codecs/h264/h264.cc +++ b/modules/video_coding/codecs/h264/h264.cc
@@ -14,10 +14,19 @@ #include <memory> #include <optional> #include <string> +#include <vector> +#include "absl/base/nullability.h" #include "absl/container/inlined_vector.h" +#include "api/environment/environment.h" +#include "api/video_codecs/h264_profile_level_id.h" +#include "api/video_codecs/scalability_mode.h" #include "api/video_codecs/sdp_video_format.h" +#include "api/video_codecs/video_encoder.h" #include "media/base/media_constants.h" +#include "modules/video_coding/codecs/h264/include/h264_globals.h" +#include "rtc_base/checks.h" +#include "rtc_base/logging.h" #include "rtc_base/trace_event.h" #if defined(WEBRTC_USE_H264) @@ -25,9 +34,6 @@ #include "modules/video_coding/codecs/h264/h264_encoder_impl.h" #endif -#include "rtc_base/checks.h" -#include "rtc_base/logging.h" - namespace webrtc { namespace {
diff --git a/modules/video_coding/codecs/h264/h264_color_space.cc b/modules/video_coding/codecs/h264/h264_color_space.cc index 5992126..e5c1037 100644 --- a/modules/video_coding/codecs/h264/h264_color_space.cc +++ b/modules/video_coding/codecs/h264/h264_color_space.cc
@@ -15,6 +15,8 @@ #include "modules/video_coding/codecs/h264/h264_color_space.h" +#include "api/video/color_space.h" + namespace webrtc { ColorSpace ExtractH264ColorSpace(AVCodecContext* codec) {
diff --git a/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/modules/video_coding/codecs/h264/h264_decoder_impl.cc index b6c8417..e40ce0a 100644 --- a/modules/video_coding/codecs/h264/h264_decoder_impl.cc +++ b/modules/video_coding/codecs/h264/h264_decoder_impl.cc
@@ -23,12 +23,28 @@ } // extern "C" #include <algorithm> +#include <array> +#include <cstddef> +#include <cstdint> #include <limits> #include <memory> +#include <optional> +#include "api/scoped_refptr.h" #include "api/video/color_space.h" +#include "api/video/encoded_image.h" #include "api/video/i010_buffer.h" +#include "api/video/i210_buffer.h" +#include "api/video/i410_buffer.h" #include "api/video/i420_buffer.h" +#include "api/video/i422_buffer.h" +#include "api/video/i444_buffer.h" +#include "api/video/render_resolution.h" +#include "api/video/video_codec_type.h" +#include "api/video/video_frame.h" +#include "api/video/video_frame_buffer.h" +#include "api/video/video_rotation.h" +#include "api/video_codecs/video_decoder.h" #include "common_video/include/video_frame_buffer.h" #include "modules/video_coding/codecs/h264/h264_color_space.h" #include "modules/video_coding/include/video_error_codes.h"
diff --git a/modules/video_coding/codecs/h264/h264_decoder_impl.h b/modules/video_coding/codecs/h264/h264_decoder_impl.h index 09530e7..626d9e0 100644 --- a/modules/video_coding/codecs/h264/h264_decoder_impl.h +++ b/modules/video_coding/codecs/h264/h264_decoder_impl.h
@@ -34,13 +34,15 @@ // some way depending on undocumented behavior. If any problems turn up, we may // have to add an extra copy operation, to enforce padding before buffers are // passed to ffmpeg. - extern "C" { #include <libavcodec/avcodec.h> } // extern "C" +#include <cstdint> #include <memory> +#include "api/video/encoded_image.h" +#include "api/video_codecs/video_decoder.h" #include "common_video/h264/h264_bitstream_parser.h" #include "common_video/include/video_frame_buffer_pool.h" #include "modules/video_coding/codecs/h264/include/h264.h"
diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/modules/video_coding/codecs/h264/h264_encoder_impl.cc index 387a88b..1b0f7a0 100644 --- a/modules/video_coding/codecs/h264/h264_encoder_impl.cc +++ b/modules/video_coding/codecs/h264/h264_encoder_impl.cc
@@ -17,24 +17,42 @@ #include "modules/video_coding/codecs/h264/h264_encoder_impl.h" #include <algorithm> +#include <cstddef> +#include <cstdint> +#include <cstring> #include <limits> #include <optional> #include <string> +#include <vector> -#include "absl/strings/match.h" +#include "api/environment/environment.h" +#include "api/scoped_refptr.h" +#include "api/units/data_rate.h" +#include "api/video/encoded_image.h" +#include "api/video/i420_buffer.h" +#include "api/video/video_bitrate_allocation.h" +#include "api/video/video_bitrate_allocator.h" #include "api/video/video_codec_constants.h" +#include "api/video/video_codec_type.h" +#include "api/video/video_frame.h" +#include "api/video/video_frame_buffer.h" +#include "api/video/video_frame_type.h" #include "api/video_codecs/scalability_mode.h" +#include "api/video_codecs/video_codec.h" +#include "api/video_codecs/video_encoder.h" #include "common_video/libyuv/include/webrtc_libyuv.h" +#include "modules/video_coding/codecs/h264/include/h264.h" +#include "modules/video_coding/codecs/h264/include/h264_globals.h" +#include "modules/video_coding/codecs/interface/common_constants.h" #include "modules/video_coding/include/video_codec_interface.h" #include "modules/video_coding/include/video_error_codes.h" #include "modules/video_coding/svc/create_scalability_structure.h" +#include "modules/video_coding/svc/scalable_video_controller.h" #include "modules/video_coding/utility/simulcast_rate_allocator.h" #include "modules/video_coding/utility/simulcast_utility.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" -#include "rtc_base/time_utils.h" #include "system_wrappers/include/metrics.h" -#include "third_party/libyuv/include/libyuv/convert.h" #include "third_party/libyuv/include/libyuv/scale.h" #include "third_party/openh264/src/codec/api/wels/codec_api.h" #include "third_party/openh264/src/codec/api/wels/codec_app_def.h"
diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl.h b/modules/video_coding/codecs/h264/h264_encoder_impl.h index d8f1156..cae05a1 100644 --- a/modules/video_coding/codecs/h264/h264_encoder_impl.h +++ b/modules/video_coding/codecs/h264/h264_encoder_impl.h
@@ -17,25 +17,33 @@ // #ifdef unless needed and tested. #ifdef WEBRTC_USE_H264 -#if defined(WEBRTC_WIN) && !defined(__clang__) -#error "See: bugs.webrtc.org/9213#c13." -#endif - +#include <cstddef> +#include <cstdint> #include <memory> +#include <optional> #include <vector> #include "absl/container/inlined_vector.h" -#include "api/transport/rtp/dependency_descriptor.h" +#include "api/environment/environment.h" +#include "api/scoped_refptr.h" +#include "api/video/encoded_image.h" #include "api/video/i420_buffer.h" #include "api/video/video_codec_constants.h" +#include "api/video/video_frame.h" +#include "api/video/video_frame_type.h" #include "api/video_codecs/scalability_mode.h" +#include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_encoder.h" #include "common_video/h264/h264_bitstream_parser.h" #include "modules/video_coding/codecs/h264/include/h264.h" +#include "modules/video_coding/codecs/h264/include/h264_globals.h" #include "modules/video_coding/svc/scalable_video_controller.h" -#include "modules/video_coding/utility/quality_scaler.h" #include "third_party/openh264/src/codec/api/wels/codec_app_def.h" +#if defined(WEBRTC_WIN) && !defined(__clang__) +#error "See: bugs.webrtc.org/9213#c13." +#endif + class ISVCEncoder; namespace webrtc {
diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc b/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc index 08d4174..ae9ed9b 100644 --- a/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc +++ b/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc
@@ -12,7 +12,10 @@ #include "modules/video_coding/codecs/h264/h264_encoder_impl.h" #include "api/environment/environment_factory.h" +#include "api/video/video_codec_type.h" +#include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_encoder.h" +#include "modules/video_coding/codecs/h264/include/h264_globals.h" #include "modules/video_coding/include/video_error_codes.h" #include "test/gtest.h"
diff --git a/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc b/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc index b9ea324..39443fc 100644 --- a/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc +++ b/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc
@@ -9,11 +9,16 @@ */ #include <memory> +#include <utility> +#include "api/environment/environment.h" #include "api/test/create_simulcast_test_fixture.h" #include "api/test/simulcast_test_fixture.h" #include "api/test/video/function_video_decoder_factory.h" #include "api/test/video/function_video_encoder_factory.h" +#include "api/video_codecs/sdp_video_format.h" +#include "api/video_codecs/video_decoder_factory.h" +#include "api/video_codecs/video_encoder_factory.h" #include "modules/video_coding/codecs/h264/include/h264.h" #include "test/gtest.h"
diff --git a/modules/video_coding/codecs/h264/include/h264_globals.h b/modules/video_coding/codecs/h264/include/h264_globals.h index dac36dd..9b0b7b6 100644 --- a/modules/video_coding/codecs/h264/include/h264_globals.h +++ b/modules/video_coding/codecs/h264/include/h264_globals.h
@@ -14,11 +14,10 @@ #ifndef MODULES_VIDEO_CODING_CODECS_H264_INCLUDE_H264_GLOBALS_H_ #define MODULES_VIDEO_CODING_CODECS_H264_INCLUDE_H264_GLOBALS_H_ -#include <algorithm> +#include <cstdint> #include <string> #include <vector> -#include "modules/video_coding/codecs/interface/common_constants.h" #include "rtc_base/checks.h" namespace webrtc {
diff --git a/modules/video_coding/codecs/h264/test/h264_impl_unittest.cc b/modules/video_coding/codecs/h264/test/h264_impl_unittest.cc index 6e9e58e..6e01376 100644 --- a/modules/video_coding/codecs/h264/test/h264_impl_unittest.cc +++ b/modules/video_coding/codecs/h264/test/h264_impl_unittest.cc
@@ -15,13 +15,13 @@ #include "api/video/color_space.h" #include "api/video/encoded_image.h" +#include "api/video/video_codec_type.h" #include "api/video/video_frame.h" +#include "api/video/video_frame_type.h" #include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_decoder.h" #include "api/video_codecs/video_encoder.h" #include "common_video/libyuv/include/webrtc_libyuv.h" -#include "media/base/codec.h" -#include "media/base/media_constants.h" #include "modules/video_coding/codecs/h264/include/h264.h" #include "modules/video_coding/codecs/test/video_codec_unittest.h" #include "modules/video_coding/include/video_codec_interface.h"
diff --git a/tools_webrtc/iwyu/apply_include_cleaner.py b/tools_webrtc/iwyu/apply_include_cleaner.py index 8c909b6..6f2a535 100755 --- a/tools_webrtc/iwyu/apply_include_cleaner.py +++ b/tools_webrtc/iwyu/apply_include_cleaner.py
@@ -79,7 +79,9 @@ "alsa\\/.*\\.h", # ALSA. "pulse\\/.*\\.h", # PulseAudio. "bits\\/.*\\.h", # pthreads. - "jpeglibmangler\\.h" # libjpeg. + "jpeglibmangler\\.h", # libjpeg. + "libavcodec\\/.*\\.h", # ffmpeg. + "libavutil\\/.*\\.h", # ffmpeg. ] _SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))