xref: /aosp_15_r20/external/openscreen/cast/standalone_sender/ffmpeg_glue.cc (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1*3f982cf4SFabien Sanglard // Copyright 2020 The Chromium Authors. All rights reserved.
2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be
3*3f982cf4SFabien Sanglard // found in the LICENSE file.
4*3f982cf4SFabien Sanglard 
5*3f982cf4SFabien Sanglard #include "cast/standalone_sender/ffmpeg_glue.h"
6*3f982cf4SFabien Sanglard 
7*3f982cf4SFabien Sanglard #include <libavcodec/version.h>
8*3f982cf4SFabien Sanglard 
9*3f982cf4SFabien Sanglard #include "util/osp_logging.h"
10*3f982cf4SFabien Sanglard 
11*3f982cf4SFabien Sanglard namespace openscreen {
12*3f982cf4SFabien Sanglard namespace cast {
13*3f982cf4SFabien Sanglard namespace internal {
14*3f982cf4SFabien Sanglard 
CreateAVFormatContextForFile(const char * path)15*3f982cf4SFabien Sanglard AVFormatContext* CreateAVFormatContextForFile(const char* path) {
16*3f982cf4SFabien Sanglard   AVFormatContext* format_context = nullptr;
17*3f982cf4SFabien Sanglard #if LIBAVCODEC_VERSION_MAJOR < 59
18*3f982cf4SFabien Sanglard #pragma GCC diagnostic push
19*3f982cf4SFabien Sanglard #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
20*3f982cf4SFabien Sanglard   av_register_all();
21*3f982cf4SFabien Sanglard #pragma GCC diagnostic pop
22*3f982cf4SFabien Sanglard #endif  // LIBAVCODEC_VERSION_MAJOR < 59
23*3f982cf4SFabien Sanglard 
24*3f982cf4SFabien Sanglard   int result = avformat_open_input(&format_context, path, nullptr, nullptr);
25*3f982cf4SFabien Sanglard   if (result < 0) {
26*3f982cf4SFabien Sanglard     OSP_LOG_ERROR << "Cannot open " << path << ": " << av_err2str(result);
27*3f982cf4SFabien Sanglard     return nullptr;
28*3f982cf4SFabien Sanglard   }
29*3f982cf4SFabien Sanglard   result = avformat_find_stream_info(format_context, nullptr);
30*3f982cf4SFabien Sanglard   if (result < 0) {
31*3f982cf4SFabien Sanglard     avformat_close_input(&format_context);
32*3f982cf4SFabien Sanglard     OSP_LOG_ERROR << "Cannot find stream info in " << path << ": "
33*3f982cf4SFabien Sanglard                   << av_err2str(result);
34*3f982cf4SFabien Sanglard     return nullptr;
35*3f982cf4SFabien Sanglard   }
36*3f982cf4SFabien Sanglard   return format_context;
37*3f982cf4SFabien Sanglard }
38*3f982cf4SFabien Sanglard 
39*3f982cf4SFabien Sanglard }  // namespace internal
40*3f982cf4SFabien Sanglard }  // namespace cast
41*3f982cf4SFabien Sanglard }  // namespace openscreen
42