mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
avdevice/decklink: fix MSVC build issues
Purpose: Made minor changes to get the decklink avdevice code to build using Visual C++. Notes: Made changes to configure per Hendrik Leppkes's review of first and second versions of patch. Also made slight alterations per Marton Balint's reviews. Comments: -- configure: Added if enabled decklink section and setting decklink_indev_extralibs and decklink_outdev_extralibs here for both mingw and Windows. Also eliminated the setting of these variables in the mingw section earlier in the file. -- libavdevice/decklink_common.cpp: Switched the order of the include of libavformat/internal.h to workaround build issues with Visual C++. See comment in file for more details. -- libavdevice/decklink_dec.cpp: a) Rearranged the include of libavformat/internal.h (for reasons as described above). b) Made slight alteration to an argument for call to av_rescale_q() to workaround a compiler error with Visual C++. This appears to only be an issue when building C++ files with Visual C++. See comment in code for more details. -- libavdevice/decklink_enc.cpp: Rearranged the include of libavformat/internal.h (for reasons as described above). Signed-off-by: Aaron Levinson <alevinsn@aracnet.com> Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
f089e02fa2
commit
7f7ee86d5a
11
configure
vendored
11
configure
vendored
@ -4853,8 +4853,6 @@ case $target_os in
|
||||
else
|
||||
target_os=mingw32
|
||||
fi
|
||||
decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 -loleaut32"
|
||||
decklink_indev_extralibs="$decklink_indev_extralibs -lole32 -loleaut32"
|
||||
LIBTARGET=i386
|
||||
if enabled x86_64; then
|
||||
LIBTARGET="i386:x86-64"
|
||||
@ -5959,6 +5957,15 @@ if ! disabled sdl2; then
|
||||
fi
|
||||
enabled sdl2 && enable sdl && add_cflags $sdl2_cflags && add_extralibs $sdl2_extralibs
|
||||
|
||||
if enabled decklink; then
|
||||
case $target_os in
|
||||
mingw32*|mingw64*|win32|win64)
|
||||
decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 -loleaut32"
|
||||
decklink_indev_extralibs="$decklink_indev_extralibs -lole32 -loleaut32"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
disabled securetransport || { check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
|
||||
check_lib securetransport "Security/SecureTransport.h Security/Security.h" "SSLCreateContext SecItemImport" "-Wl,-framework,CoreFoundation -Wl,-framework,Security"; }
|
||||
|
||||
|
@ -19,6 +19,12 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/* Include internal.h first to avoid conflict between winsock.h (used by
|
||||
* DeckLink headers) and winsock2.h (used by libavformat) in MSVC++ builds */
|
||||
extern "C" {
|
||||
#include "libavformat/internal.h"
|
||||
}
|
||||
|
||||
#include <DeckLinkAPI.h>
|
||||
#ifdef _WIN32
|
||||
#include <DeckLinkAPI_i.c>
|
||||
@ -28,7 +34,6 @@
|
||||
|
||||
extern "C" {
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavformat/internal.h"
|
||||
#include "libavutil/imgutils.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavutil/bswap.h"
|
||||
|
@ -19,12 +19,17 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/* Include internal.h first to avoid conflict between winsock.h (used by
|
||||
* DeckLink headers) and winsock2.h (used by libavformat) in MSVC++ builds */
|
||||
extern "C" {
|
||||
#include "libavformat/internal.h"
|
||||
}
|
||||
|
||||
#include <DeckLinkAPI.h>
|
||||
|
||||
extern "C" {
|
||||
#include "config.h"
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavformat/internal.h"
|
||||
#include "libavutil/avutil.h"
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/imgutils.h"
|
||||
@ -262,8 +267,15 @@ static int64_t get_pkt_pts(IDeckLinkVideoInputFrame *videoFrame,
|
||||
res = videoFrame->GetHardwareReferenceTimestamp(time_base.den, &bmd_pts, &bmd_duration);
|
||||
break;
|
||||
case PTS_SRC_WALLCLOCK:
|
||||
pts = av_rescale_q(wallclock, AV_TIME_BASE_Q, time_base);
|
||||
{
|
||||
/* MSVC does not support compound literals like AV_TIME_BASE_Q
|
||||
* in C++ code (compiler error C4576) */
|
||||
AVRational timebase;
|
||||
timebase.num = 1;
|
||||
timebase.den = AV_TIME_BASE;
|
||||
pts = av_rescale_q(wallclock, timebase, time_base);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (res == S_OK)
|
||||
pts = bmd_pts / time_base.num;
|
||||
|
@ -22,11 +22,16 @@
|
||||
#include <atomic>
|
||||
using std::atomic;
|
||||
|
||||
/* Include internal.h first to avoid conflict between winsock.h (used by
|
||||
* DeckLink headers) and winsock2.h (used by libavformat) in MSVC++ builds */
|
||||
extern "C" {
|
||||
#include "libavformat/internal.h"
|
||||
}
|
||||
|
||||
#include <DeckLinkAPI.h>
|
||||
|
||||
extern "C" {
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavformat/internal.h"
|
||||
#include "libavutil/imgutils.h"
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user