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 SanglardAVFormatContext* 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