[FFmpeg-cvslog] Merge commit 'abf1c058d1bd0ed1b820ea5e501a4484756f00b0'

James Almer git at videolan.org
Sat Nov 11 16:29:37 EET 2017


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Sat Nov 11 10:32:09 2017 -0300| [87865bf6c7001e6fd8c536a247f71a9a426c3bd0] | committer: James Almer

Merge commit 'abf1c058d1bd0ed1b820ea5e501a4484756f00b0'

* commit 'abf1c058d1bd0ed1b820ea5e501a4484756f00b0':
  msvc: Properly specify dllexport for data symbols shared across dll boundaries

Merged-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=87865bf6c7001e6fd8c536a247f71a9a426c3bd0
---

 ffbuild/library.mak        |  2 ++
 libavcodec/ac3tab.h        |  3 ++-
 libavcodec/dca.h           |  4 ++--
 libavcodec/internal.h      | 10 ++++++++++
 libavcodec/jpegtables.h    | 16 ++++++++--------
 libavcodec/mpeg4audio.h    |  3 ++-
 libavcodec/mpegaudiodata.h |  6 +++---
 libavcodec/raw.h           |  5 +++--
 libavutil/internal.h       |  8 ++++++--
 libavutil/xga_font_data.h  |  4 ++--
 10 files changed, 40 insertions(+), 21 deletions(-)

diff --git a/ffbuild/library.mak b/ffbuild/library.mak
index ed269fdab6..f85ee1ebbf 100644
--- a/ffbuild/library.mak
+++ b/ffbuild/library.mak
@@ -31,6 +31,8 @@ define RULES
 $(TOOLS):     THISLIB = $(FULLNAME:%=$(LD_LIB))
 $(TESTPROGS): THISLIB = $(SUBDIR)$(LIBNAME)
 
+$(LIBOBJS): CPPFLAGS += -DBUILDING_$(NAME)
+
 $(TESTPROGS) $(TOOLS): %$(EXESUF): %.o
 	$$(LD) $(LDFLAGS) $(LDEXEFLAGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $(FFEXTRALIBS) $$(EXTRALIBS-$$(*F)) $$(ELIBS)
 
diff --git a/libavcodec/ac3tab.h b/libavcodec/ac3tab.h
index f529fc8077..ade6fb15e7 100644
--- a/libavcodec/ac3tab.h
+++ b/libavcodec/ac3tab.h
@@ -26,10 +26,11 @@
 
 #include "libavutil/internal.h"
 #include "ac3.h"
+#include "internal.h"
 
 extern const uint16_t ff_ac3_frame_size_tab[38][3];
 extern const uint8_t  ff_ac3_channels_tab[8];
-extern av_export const uint16_t avpriv_ac3_channel_layout_tab[8];
+extern av_export_avcodec const uint16_t avpriv_ac3_channel_layout_tab[8];
 extern const uint8_t  ff_ac3_enc_channel_map[8][2][6];
 extern const uint8_t  ff_ac3_dec_channel_map[8][2][6];
 extern const uint16_t ff_ac3_sample_rate_tab[3];
diff --git a/libavcodec/dca.h b/libavcodec/dca.h
index dcc7c7b395..e96c589c02 100644
--- a/libavcodec/dca.h
+++ b/libavcodec/dca.h
@@ -29,10 +29,10 @@
 #include <stdint.h>
 
 #include "libavutil/common.h"
-#include "libavutil/internal.h"
 #include "libavutil/intreadwrite.h"
 
 #include "get_bits.h"
+#include "internal.h"
 
 #define DCA_CORE_FRAME_HEADER_SIZE      18
 
@@ -195,7 +195,7 @@ enum DCADownMixType {
     DCA_DMIX_TYPE_COUNT
 };
 
-extern av_export const uint32_t avpriv_dca_sample_rates[16];
+extern av_export_avcodec const uint32_t avpriv_dca_sample_rates[16];
 
 extern const uint32_t ff_dca_sampling_freqs[16];
 extern const uint8_t ff_dca_freq_ranges[16];
diff --git a/libavcodec/internal.h b/libavcodec/internal.h
index 948d5461c1..522032b108 100644
--- a/libavcodec/internal.h
+++ b/libavcodec/internal.h
@@ -414,4 +414,14 @@ int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len,
  */
 int64_t ff_guess_coded_bitrate(AVCodecContext *avctx);
 
+#if defined(_MSC_VER) && CONFIG_SHARED
+#ifdef BUILDING_avcodec
+#    define av_export_avcodec __declspec(dllexport)
+#else
+#    define av_export_avcodec __declspec(dllimport)
+#endif
+#else
+#    define av_export_avcodec
+#endif
+
 #endif /* AVCODEC_INTERNAL_H */
diff --git a/libavcodec/jpegtables.h b/libavcodec/jpegtables.h
index 6833b4b166..aa38df4033 100644
--- a/libavcodec/jpegtables.h
+++ b/libavcodec/jpegtables.h
@@ -23,18 +23,18 @@
 
 #include <stdint.h>
 
-#include "libavutil/internal.h"
+#include "internal.h"
 
-extern av_export const uint8_t avpriv_mjpeg_bits_dc_luminance[];
-extern av_export const uint8_t avpriv_mjpeg_val_dc[];
+extern av_export_avcodec const uint8_t avpriv_mjpeg_bits_dc_luminance[];
+extern av_export_avcodec const uint8_t avpriv_mjpeg_val_dc[];
 
-extern av_export const uint8_t avpriv_mjpeg_bits_dc_chrominance[];
+extern av_export_avcodec const uint8_t avpriv_mjpeg_bits_dc_chrominance[];
 
-extern av_export const uint8_t avpriv_mjpeg_bits_ac_luminance[];
-extern av_export const uint8_t avpriv_mjpeg_val_ac_luminance[];
+extern av_export_avcodec const uint8_t avpriv_mjpeg_bits_ac_luminance[];
+extern av_export_avcodec const uint8_t avpriv_mjpeg_val_ac_luminance[];
 
-extern av_export const uint8_t avpriv_mjpeg_bits_ac_chrominance[];
-extern av_export const uint8_t avpriv_mjpeg_val_ac_chrominance[];
+extern av_export_avcodec const uint8_t avpriv_mjpeg_bits_ac_chrominance[];
+extern av_export_avcodec const uint8_t avpriv_mjpeg_val_ac_chrominance[];
 
 void ff_mjpeg_build_huffman_codes(uint8_t *huff_size, uint16_t *huff_code,
                                   const uint8_t *bits_table,
diff --git a/libavcodec/mpeg4audio.h b/libavcodec/mpeg4audio.h
index 34471782ab..b9cea8af17 100644
--- a/libavcodec/mpeg4audio.h
+++ b/libavcodec/mpeg4audio.h
@@ -27,6 +27,7 @@
 #include "libavutil/attributes.h"
 
 #include "get_bits.h"
+#include "internal.h"
 #include "put_bits.h"
 
 typedef struct MPEG4AudioConfig {
@@ -44,7 +45,7 @@ typedef struct MPEG4AudioConfig {
     int frame_length_short;
 } MPEG4AudioConfig;
 
-extern av_export const int avpriv_mpeg4audio_sample_rates[16];
+extern av_export_avcodec const int avpriv_mpeg4audio_sample_rates[16];
 extern const uint8_t ff_mpeg4audio_channels[8];
 
 /**
diff --git a/libavcodec/mpegaudiodata.h b/libavcodec/mpegaudiodata.h
index 29a26588b2..a188150cbf 100644
--- a/libavcodec/mpegaudiodata.h
+++ b/libavcodec/mpegaudiodata.h
@@ -29,13 +29,13 @@
 
 #include <stdint.h>
 
-#include "libavutil/internal.h"
+#include "internal.h"
 
 #define MODE_EXT_MS_STEREO 2
 #define MODE_EXT_I_STEREO  1
 
-extern av_export const uint16_t avpriv_mpa_bitrate_tab[2][3][15];
-extern av_export const uint16_t avpriv_mpa_freq_tab[3];
+extern av_export_avcodec const uint16_t avpriv_mpa_bitrate_tab[2][3][15];
+extern av_export_avcodec const uint16_t avpriv_mpa_freq_tab[3];
 extern const int ff_mpa_sblimit_table[5];
 extern const int ff_mpa_quant_steps[17];
 extern const int ff_mpa_quant_bits[17];
diff --git a/libavcodec/raw.h b/libavcodec/raw.h
index 24bf4cc55a..28a27b1f9e 100644
--- a/libavcodec/raw.h
+++ b/libavcodec/raw.h
@@ -28,6 +28,7 @@
 #define AVCODEC_RAW_H
 
 #include "avcodec.h"
+#include "internal.h"
 #include "libavutil/internal.h"
 
 typedef struct PixelFormatTag {
@@ -41,7 +42,7 @@ const struct PixelFormatTag *avpriv_get_raw_pix_fmt_tags(void);
 
 enum AVPixelFormat avpriv_find_pix_fmt(const PixelFormatTag *tags, unsigned int fourcc);
 
-extern av_export const PixelFormatTag avpriv_pix_fmt_bps_avi[];
-extern av_export const PixelFormatTag avpriv_pix_fmt_bps_mov[];
+extern av_export_avcodec const PixelFormatTag avpriv_pix_fmt_bps_avi[];
+extern av_export_avcodec const PixelFormatTag avpriv_pix_fmt_bps_mov[];
 
 #endif /* AVCODEC_RAW_H */
diff --git a/libavutil/internal.h b/libavutil/internal.h
index 6f92f71e8e..c4bf1466ef 100644
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
@@ -64,9 +64,13 @@
 #endif
 
 #if defined(_MSC_VER) && CONFIG_SHARED
-#    define av_export __declspec(dllimport)
+#ifdef BUILDING_avutil
+#    define av_export_avutil __declspec(dllexport)
 #else
-#    define av_export
+#    define av_export_avutil __declspec(dllimport)
+#endif
+#else
+#    define av_export_avutil
 #endif
 
 #if HAVE_PRAGMA_DEPRECATED
diff --git a/libavutil/xga_font_data.h b/libavutil/xga_font_data.h
index 5e40f542e4..69dc337120 100644
--- a/libavutil/xga_font_data.h
+++ b/libavutil/xga_font_data.h
@@ -29,7 +29,7 @@
 #include <stdint.h>
 #include "internal.h"
 
-extern av_export const uint8_t avpriv_cga_font[2048];
-extern av_export const uint8_t avpriv_vga16_font[4096];
+extern av_export_avutil const uint8_t avpriv_cga_font[2048];
+extern av_export_avutil const uint8_t avpriv_vga16_font[4096];
 
 #endif /* AVUTIL_XGA_FONT_DATA_H */


======================================================================

diff --cc ffbuild/library.mak
index ed269fdab6,0000000000..f85ee1ebbf
mode 100644,000000..100644
--- a/ffbuild/library.mak
+++ b/ffbuild/library.mak
@@@ -1,107 -1,0 +1,109 @@@
 +include $(SRC_PATH)/ffbuild/common.mak
 +
 +ifeq (,$(filter %clean config,$(MAKECMDGOALS)))
 +-include $(SUBDIR)lib$(NAME).version
 +endif
 +
 +LIBVERSION := $(lib$(NAME)_VERSION)
 +LIBMAJOR   := $(lib$(NAME)_VERSION_MAJOR)
 +LIBMINOR   := $(lib$(NAME)_VERSION_MINOR)
 +INCINSTDIR := $(INCDIR)/lib$(NAME)
 +
 +INSTHEADERS := $(INSTHEADERS) $(HEADERS:%=$(SUBDIR)%)
 +
 +all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME)  $(SUBDIR)lib$(FULLNAME).pc
 +all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME) $(SUBDIR)lib$(FULLNAME).pc
 +
 +LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS)
 +$(LIBOBJS) $(LIBOBJS:.o=.s) $(LIBOBJS:.o=.i):   CPPFLAGS += -DHAVE_AV_CONFIG_H
 +
 +$(SUBDIR)$(LIBNAME): $(OBJS)
 +	$(RM) $@
 +	$(AR) $(ARFLAGS) $(AR_O) $^
 +	$(RANLIB) $@
 +
 +install-headers: install-lib$(NAME)-headers install-lib$(NAME)-pkgconfig
 +
 +install-libs-$(CONFIG_STATIC): install-lib$(NAME)-static
 +install-libs-$(CONFIG_SHARED): install-lib$(NAME)-shared
 +
 +define RULES
 +$(TOOLS):     THISLIB = $(FULLNAME:%=$(LD_LIB))
 +$(TESTPROGS): THISLIB = $(SUBDIR)$(LIBNAME)
 +
++$(LIBOBJS): CPPFLAGS += -DBUILDING_$(NAME)
++
 +$(TESTPROGS) $(TOOLS): %$(EXESUF): %.o
 +	$$(LD) $(LDFLAGS) $(LDEXEFLAGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $(FFEXTRALIBS) $$(EXTRALIBS-$$(*F)) $$(ELIBS)
 +
 +$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h | $(SUBDIR)
 +	$$(M) $$(SRC_PATH)/ffbuild/libversion.sh $(NAME) $$< > $$@
 +
 +$(SUBDIR)lib$(FULLNAME).pc: $(SUBDIR)version.h | $(SUBDIR)
 +	$$(M) $$(SRC_PATH)/ffbuild/pkgconfig_generate.sh $(NAME) "$(DESC)"
 +
 +$(SUBDIR)lib$(NAME).ver: $(SUBDIR)lib$(NAME).v $(OBJS)
 +	$$(M)sed 's/MAJOR/$(lib$(NAME)_VERSION_MAJOR)/' $$< | $(VERSION_SCRIPT_POSTPROCESS_CMD) > $$@
 +
 +$(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR)
 +	$(Q)cd ./$(SUBDIR) && $(LN_S) $(SLIBNAME_WITH_MAJOR) $(SLIBNAME)
 +
 +$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SLIBOBJS) $(SUBDIR)lib$(NAME).ver
 +	$(SLIB_CREATE_DEF_CMD)
 +	$$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) $$(filter %.o,$$^) $(FFEXTRALIBS)
 +	$(SLIB_EXTRA_CMD)
 +
 +ifdef SUBDIR
 +$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(DEP_LIBS)
 +endif
 +
 +clean::
 +	$(RM) $(addprefix $(SUBDIR),$(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \
 +	    $(CLEANSUFFIXES:%=$(SUBDIR)$(ARCH)/%) $(CLEANSUFFIXES:%=$(SUBDIR)tests/%)
 +
 +distclean:: clean
 +	$(RM) $(DISTCLEANSUFFIXES:%=$(SUBDIR)%) $(DISTCLEANSUFFIXES:%=$(SUBDIR)$(ARCH)/%) \
 +            $(DISTCLEANSUFFIXES:%=$(SUBDIR)tests/%)
 +
 +install-lib$(NAME)-shared: $(SUBDIR)$(SLIBNAME)
 +	$(Q)mkdir -p "$(SHLIBDIR)"
 +	$$(INSTALL) -m 755 $$< "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)"
 +	$$(STRIP) "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)"
 +	$(Q)$(foreach F,$(SLIB_INSTALL_LINKS),(cd "$(SHLIBDIR)" && $(LN_S) $(SLIB_INSTALL_NAME) $(F));)
 +	$(if $(SLIB_INSTALL_EXTRA_SHLIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_SHLIB:%=$(SUBDIR)%) "$(SHLIBDIR)")
 +	$(if $(SLIB_INSTALL_EXTRA_LIB),$(Q)mkdir -p "$(LIBDIR)")
 +	$(if $(SLIB_INSTALL_EXTRA_LIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_LIB:%=$(SUBDIR)%) "$(LIBDIR)")
 +
 +install-lib$(NAME)-static: $(SUBDIR)$(LIBNAME)
 +	$(Q)mkdir -p "$(LIBDIR)"
 +	$$(INSTALL) -m 644 $$< "$(LIBDIR)"
 +	$(LIB_INSTALL_EXTRA_CMD)
 +
 +install-lib$(NAME)-headers: $(addprefix $(SUBDIR),$(HEADERS) $(BUILT_HEADERS))
 +	$(Q)mkdir -p "$(INCINSTDIR)"
 +	$$(INSTALL) -m 644 $$^ "$(INCINSTDIR)"
 +
 +install-lib$(NAME)-pkgconfig: $(SUBDIR)lib$(FULLNAME).pc
 +	$(Q)mkdir -p "$(PKGCONFIGDIR)"
 +	$$(INSTALL) -m 644 $$^ "$(PKGCONFIGDIR)"
 +
 +uninstall-libs::
 +	-$(RM) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR)" \
 +	       "$(SHLIBDIR)/$(SLIBNAME)"            \
 +	       "$(SHLIBDIR)/$(SLIBNAME_WITH_VERSION)"
 +	-$(RM)  $(SLIB_INSTALL_EXTRA_SHLIB:%="$(SHLIBDIR)/%")
 +	-$(RM)  $(SLIB_INSTALL_EXTRA_LIB:%="$(LIBDIR)/%")
 +	-$(RM) "$(LIBDIR)/$(LIBNAME)"
 +
 +uninstall-headers::
 +	$(RM) $(addprefix "$(INCINSTDIR)/",$(HEADERS) $(BUILT_HEADERS))
 +	$(RM) "$(PKGCONFIGDIR)/lib$(FULLNAME).pc"
 +	-rmdir "$(INCINSTDIR)"
 +endef
 +
 +$(eval $(RULES))
 +
 +$(TOOLS):     $(DEP_LIBS) $(SUBDIR)$($(CONFIG_SHARED:yes=S)LIBNAME)
 +$(TESTPROGS): $(DEP_LIBS) $(SUBDIR)$(LIBNAME)
 +
 +testprogs: $(TESTPROGS)
diff --cc libavcodec/ac3tab.h
index f529fc8077,4c0122c39d..ade6fb15e7
--- a/libavcodec/ac3tab.h
+++ b/libavcodec/ac3tab.h
@@@ -26,10 -26,17 +26,11 @@@
  
  #include "libavutil/internal.h"
  #include "ac3.h"
+ #include "internal.h"
  
 -#if CONFIG_HARDCODED_TABLES
 -#   define HCONST const
 -#else
 -#   define HCONST
 -#endif
 -
  extern const uint16_t ff_ac3_frame_size_tab[38][3];
  extern const uint8_t  ff_ac3_channels_tab[8];
- extern av_export const uint16_t avpriv_ac3_channel_layout_tab[8];
+ extern av_export_avcodec const uint16_t avpriv_ac3_channel_layout_tab[8];
  extern const uint8_t  ff_ac3_enc_channel_map[8][2][6];
  extern const uint8_t  ff_ac3_dec_channel_map[8][2][6];
  extern const uint16_t ff_ac3_sample_rate_tab[3];
diff --cc libavcodec/dca.h
index dcc7c7b395,b2f5cbacf4..e96c589c02
--- a/libavcodec/dca.h
+++ b/libavcodec/dca.h
@@@ -28,179 -27,268 +28,179 @@@
  
  #include <stdint.h>
  
 -#include "libavutil/float_dsp.h"
 +#include "libavutil/common.h"
- #include "libavutil/internal.h"
 +#include "libavutil/intreadwrite.h"
  
 -#include "avcodec.h"
 -#include "dcadsp.h"
 -#include "fmtconvert.h"
  #include "get_bits.h"
+ #include "internal.h"
  
 -#define DCA_PRIM_CHANNELS_MAX  (7)
 -#define DCA_ABITS_MAX         (32)      /* Should be 28 */
 -#define DCA_SUBSUBFRAMES_MAX   (4)
 -#define DCA_SUBFRAMES_MAX     (16)
 -#define DCA_BLOCKS_MAX        (16)
 -#define DCA_LFE_MAX            (3)
 +#define DCA_CORE_FRAME_HEADER_SIZE      18
 +
 +enum DCAParseError {
 +    DCA_PARSE_ERROR_SYNC_WORD       = -1,
 +    DCA_PARSE_ERROR_DEFICIT_SAMPLES = -2,
 +    DCA_PARSE_ERROR_PCM_BLOCKS      = -3,
 +    DCA_PARSE_ERROR_FRAME_SIZE      = -4,
 +    DCA_PARSE_ERROR_AMODE           = -5,
 +    DCA_PARSE_ERROR_SAMPLE_RATE     = -6,
 +    DCA_PARSE_ERROR_RESERVED_BIT    = -7,
 +    DCA_PARSE_ERROR_LFE_FLAG        = -8,
 +    DCA_PARSE_ERROR_PCM_RES         = -9,
 +};
  
 -#define DCA_PRIM_CHANNELS_MAX  (7)
 -#define DCA_ABITS_MAX         (32)      /* Should be 28 */
 -#define DCA_SUBSUBFRAMES_MAX   (4)
 -#define DCA_SUBFRAMES_MAX     (16)
 -#define DCA_BLOCKS_MAX        (16)
 -#define DCA_LFE_MAX            (3)
 -#define DCA_XLL_FBANDS_MAX     (4)
 -#define DCA_XLL_SEGMENTS_MAX  (16)
 -#define DCA_XLL_CHSETS_MAX    (16)
 -#define DCA_XLL_CHANNELS_MAX  (16)
 -#define DCA_XLL_AORDER_MAX    (15)
 +typedef struct DCACoreFrameHeader {
 +    uint8_t     normal_frame;       ///< Frame type
 +    uint8_t     deficit_samples;    ///< Deficit sample count
 +    uint8_t     crc_present;        ///< CRC present flag
 +    uint8_t     npcmblocks;         ///< Number of PCM sample blocks
 +    uint16_t    frame_size;         ///< Primary frame byte size
 +    uint8_t     audio_mode;         ///< Audio channel arrangement
 +    uint8_t     sr_code;            ///< Core audio sampling frequency
 +    uint8_t     br_code;            ///< Transmission bit rate
 +    uint8_t     drc_present;        ///< Embedded dynamic range flag
 +    uint8_t     ts_present;         ///< Embedded time stamp flag
 +    uint8_t     aux_present;        ///< Auxiliary data flag
 +    uint8_t     hdcd_master;        ///< HDCD mastering flag
 +    uint8_t     ext_audio_type;     ///< Extension audio descriptor flag
 +    uint8_t     ext_audio_present;  ///< Extended coding flag
 +    uint8_t     sync_ssf;           ///< Audio sync word insertion flag
 +    uint8_t     lfe_present;        ///< Low frequency effects flag
 +    uint8_t     predictor_history;  ///< Predictor history flag switch
 +    uint8_t     filter_perfect;     ///< Multirate interpolator switch
 +    uint8_t     encoder_rev;        ///< Encoder software revision
 +    uint8_t     copy_hist;          ///< Copy history
 +    uint8_t     pcmr_code;          ///< Source PCM resolution
 +    uint8_t     sumdiff_front;      ///< Front sum/difference flag
 +    uint8_t     sumdiff_surround;   ///< Surround sum/difference flag
 +    uint8_t     dn_code;            ///< Dialog normalization / unspecified
 +} DCACoreFrameHeader;
 +
 +enum DCASpeaker {
 +    DCA_SPEAKER_C,    DCA_SPEAKER_L,    DCA_SPEAKER_R,    DCA_SPEAKER_Ls,
 +    DCA_SPEAKER_Rs,   DCA_SPEAKER_LFE1, DCA_SPEAKER_Cs,   DCA_SPEAKER_Lsr,
 +    DCA_SPEAKER_Rsr,  DCA_SPEAKER_Lss,  DCA_SPEAKER_Rss,  DCA_SPEAKER_Lc,
 +    DCA_SPEAKER_Rc,   DCA_SPEAKER_Lh,   DCA_SPEAKER_Ch,   DCA_SPEAKER_Rh,
 +    DCA_SPEAKER_LFE2, DCA_SPEAKER_Lw,   DCA_SPEAKER_Rw,   DCA_SPEAKER_Oh,
 +    DCA_SPEAKER_Lhs,  DCA_SPEAKER_Rhs,  DCA_SPEAKER_Chr,  DCA_SPEAKER_Lhr,
 +    DCA_SPEAKER_Rhr,  DCA_SPEAKER_Cl,   DCA_SPEAKER_Ll,   DCA_SPEAKER_Rl,
 +    DCA_SPEAKER_RSV1, DCA_SPEAKER_RSV2, DCA_SPEAKER_RSV3, DCA_SPEAKER_RSV4,
 +
 +    DCA_SPEAKER_COUNT
 +};
  
 -/* Arbitrary limit; not sure what the maximum really is, but much larger. */
 -#define DCA_XLL_DMIX_NCOEFFS_MAX (18)
 +enum DCASpeakerMask {
 +    DCA_SPEAKER_MASK_C     = 0x00000001,
 +    DCA_SPEAKER_MASK_L     = 0x00000002,
 +    DCA_SPEAKER_MASK_R     = 0x00000004,
 +    DCA_SPEAKER_MASK_Ls    = 0x00000008,
 +    DCA_SPEAKER_MASK_Rs    = 0x00000010,
 +    DCA_SPEAKER_MASK_LFE1  = 0x00000020,
 +    DCA_SPEAKER_MASK_Cs    = 0x00000040,
 +    DCA_SPEAKER_MASK_Lsr   = 0x00000080,
 +    DCA_SPEAKER_MASK_Rsr   = 0x00000100,
 +    DCA_SPEAKER_MASK_Lss   = 0x00000200,
 +    DCA_SPEAKER_MASK_Rss   = 0x00000400,
 +    DCA_SPEAKER_MASK_Lc    = 0x00000800,
 +    DCA_SPEAKER_MASK_Rc    = 0x00001000,
 +    DCA_SPEAKER_MASK_Lh    = 0x00002000,
 +    DCA_SPEAKER_MASK_Ch    = 0x00004000,
 +    DCA_SPEAKER_MASK_Rh    = 0x00008000,
 +    DCA_SPEAKER_MASK_LFE2  = 0x00010000,
 +    DCA_SPEAKER_MASK_Lw    = 0x00020000,
 +    DCA_SPEAKER_MASK_Rw    = 0x00040000,
 +    DCA_SPEAKER_MASK_Oh    = 0x00080000,
 +    DCA_SPEAKER_MASK_Lhs   = 0x00100000,
 +    DCA_SPEAKER_MASK_Rhs   = 0x00200000,
 +    DCA_SPEAKER_MASK_Chr   = 0x00400000,
 +    DCA_SPEAKER_MASK_Lhr   = 0x00800000,
 +    DCA_SPEAKER_MASK_Rhr   = 0x01000000,
 +    DCA_SPEAKER_MASK_Cl    = 0x02000000,
 +    DCA_SPEAKER_MASK_Ll    = 0x04000000,
 +    DCA_SPEAKER_MASK_Rl    = 0x08000000,
 +};
  
 -#define DCA_MAX_FRAME_SIZE       16384
 -#define DCA_MAX_EXSS_HEADER_SIZE  4096
 +#define DCA_SPEAKER_LAYOUT_MONO         (DCA_SPEAKER_MASK_C)
 +#define DCA_SPEAKER_LAYOUT_STEREO       (DCA_SPEAKER_MASK_L | DCA_SPEAKER_MASK_R)
 +#define DCA_SPEAKER_LAYOUT_2POINT1      (DCA_SPEAKER_LAYOUT_STEREO | DCA_SPEAKER_MASK_LFE1)
 +#define DCA_SPEAKER_LAYOUT_3_0          (DCA_SPEAKER_LAYOUT_STEREO | DCA_SPEAKER_MASK_C)
 +#define DCA_SPEAKER_LAYOUT_2_1          (DCA_SPEAKER_LAYOUT_STEREO | DCA_SPEAKER_MASK_Cs)
 +#define DCA_SPEAKER_LAYOUT_3_1          (DCA_SPEAKER_LAYOUT_3_0 | DCA_SPEAKER_MASK_Cs)
 +#define DCA_SPEAKER_LAYOUT_2_2          (DCA_SPEAKER_LAYOUT_STEREO | DCA_SPEAKER_MASK_Ls | DCA_SPEAKER_MASK_Rs)
 +#define DCA_SPEAKER_LAYOUT_5POINT0      (DCA_SPEAKER_LAYOUT_3_0 | DCA_SPEAKER_MASK_Ls | DCA_SPEAKER_MASK_Rs)
 +#define DCA_SPEAKER_LAYOUT_5POINT1      (DCA_SPEAKER_LAYOUT_5POINT0 | DCA_SPEAKER_MASK_LFE1)
 +#define DCA_SPEAKER_LAYOUT_7POINT0_WIDE (DCA_SPEAKER_LAYOUT_5POINT0 | DCA_SPEAKER_MASK_Lw | DCA_SPEAKER_MASK_Rw)
 +#define DCA_SPEAKER_LAYOUT_7POINT1_WIDE (DCA_SPEAKER_LAYOUT_7POINT0_WIDE | DCA_SPEAKER_MASK_LFE1)
 +
 +#define DCA_HAS_STEREO(mask) \
 +    ((mask & DCA_SPEAKER_LAYOUT_STEREO) == DCA_SPEAKER_LAYOUT_STEREO)
 +
 +enum DCASpeakerPair {
 +    DCA_SPEAKER_PAIR_C      = 0x0001,
 +    DCA_SPEAKER_PAIR_LR     = 0x0002,
 +    DCA_SPEAKER_PAIR_LsRs   = 0x0004,
 +    DCA_SPEAKER_PAIR_LFE1   = 0x0008,
 +    DCA_SPEAKER_PAIR_Cs     = 0x0010,
 +    DCA_SPEAKER_PAIR_LhRh   = 0x0020,
 +    DCA_SPEAKER_PAIR_LsrRsr = 0x0040,
 +    DCA_SPEAKER_PAIR_Ch     = 0x0080,
 +    DCA_SPEAKER_PAIR_Oh     = 0x0100,
 +    DCA_SPEAKER_PAIR_LcRc   = 0x0200,
 +    DCA_SPEAKER_PAIR_LwRw   = 0x0400,
 +    DCA_SPEAKER_PAIR_LssRss = 0x0800,
 +    DCA_SPEAKER_PAIR_LFE2   = 0x1000,
 +    DCA_SPEAKER_PAIR_LhsRhs = 0x2000,
 +    DCA_SPEAKER_PAIR_Chr    = 0x4000,
 +    DCA_SPEAKER_PAIR_LhrRhr = 0x8000
 +};
  
 -#define DCA_BUFFER_PADDING_SIZE   1024
 +/**
 + * Return number of individual channels in DCASpeakerPair mask
 + */
 +static inline int ff_dca_count_chs_for_mask(unsigned int mask)
 +{
 +    return av_popcount((mask & 0xffff) | ((mask & 0xae66) << 16));
 +}
 +
 +enum DCARepresentationType {
 +    DCA_REPR_TYPE_LtRt = 2,
 +    DCA_REPR_TYPE_LhRh = 3
 +};
  
  enum DCAExtensionMask {
 -    DCA_EXT_CORE       = 0x001, ///< core in core substream
 -    DCA_EXT_XXCH       = 0x002, ///< XXCh channels extension in core substream
 -    DCA_EXT_X96        = 0x004, ///< 96/24 extension in core substream
 -    DCA_EXT_XCH        = 0x008, ///< XCh channel extension in core substream
 -    DCA_EXT_EXSS_CORE  = 0x010, ///< core in ExSS (extension substream)
 -    DCA_EXT_EXSS_XBR   = 0x020, ///< extended bitrate extension in ExSS
 -    DCA_EXT_EXSS_XXCH  = 0x040, ///< XXCh channels extension in ExSS
 -    DCA_EXT_EXSS_X96   = 0x080, ///< 96/24 extension in ExSS
 -    DCA_EXT_EXSS_LBR   = 0x100, ///< low bitrate component in ExSS
 -    DCA_EXT_EXSS_XLL   = 0x200, ///< lossless extension in ExSS
 +    DCA_CSS_CORE   = 0x001,
 +    DCA_CSS_XXCH   = 0x002,
 +    DCA_CSS_X96    = 0x004,
 +    DCA_CSS_XCH    = 0x008,
 +    DCA_CSS_MASK   = 0x00f,
 +    DCA_EXSS_CORE  = 0x010,
 +    DCA_EXSS_XBR   = 0x020,
 +    DCA_EXSS_XXCH  = 0x040,
 +    DCA_EXSS_X96   = 0x080,
 +    DCA_EXSS_LBR   = 0x100,
 +    DCA_EXSS_XLL   = 0x200,
 +    DCA_EXSS_RSV1  = 0x400,
 +    DCA_EXSS_RSV2  = 0x800,
 +    DCA_EXSS_MASK  = 0xff0,
  };
  
 -typedef struct XllChSetSubHeader {
 -    int channels;               ///< number of channels in channel set, at most 16
 -    int residual_encode;        ///< residual channel encoding
 -    int bit_resolution;         ///< input sample bit-width
 -    int bit_width;              ///< original input sample bit-width
 -    int sampling_frequency;     ///< sampling frequency
 -    int samp_freq_interp;       ///< sampling frequency interpolation multiplier
 -    int replacement_set;        ///< replacement channel set group
 -    int active_replace_set;     ///< current channel set is active channel set
 -    int primary_ch_set;
 -    int downmix_coeff_code_embedded;
 -    int downmix_embedded;
 -    int downmix_type;
 -    int hier_chset;             ///< hierarchical channel set
 -    int downmix_ncoeffs;
 -    int downmix_coeffs[DCA_XLL_DMIX_NCOEFFS_MAX];
 -    int ch_mask_enabled;
 -    int ch_mask;
 -    int mapping_coeffs_present;
 -    int num_freq_bands;
 -
 -    /* m_nOrigChanOrder */
 -    uint8_t orig_chan_order[DCA_XLL_FBANDS_MAX][DCA_XLL_CHANNELS_MAX];
 -    uint8_t orig_chan_order_inv[DCA_XLL_FBANDS_MAX][DCA_XLL_CHANNELS_MAX];
 -    /* Coefficients for channel pairs (at most 8), m_anPWChPairsCoeffs */
 -    int8_t pw_ch_pairs_coeffs[DCA_XLL_FBANDS_MAX][DCA_XLL_CHANNELS_MAX/2];
 -    /* m_nCurrHighestLPCOrder */
 -    uint8_t adapt_order_max[DCA_XLL_FBANDS_MAX];
 -    /* m_pnAdaptPredOrder */
 -    uint8_t adapt_order[DCA_XLL_FBANDS_MAX][DCA_XLL_CHANNELS_MAX];
 -    /* m_pnFixedPredOrder */
 -    uint8_t fixed_order[DCA_XLL_FBANDS_MAX][DCA_XLL_CHANNELS_MAX];
 -    /* m_pnLPCReflCoeffsQInd, unsigned version */
 -    uint8_t lpc_refl_coeffs_q_ind[DCA_XLL_FBANDS_MAX]
 -                                 [DCA_XLL_CHANNELS_MAX][DCA_XLL_AORDER_MAX];
 -
 -    int lsb_fsize[DCA_XLL_FBANDS_MAX];
 -    int8_t scalable_lsbs[DCA_XLL_FBANDS_MAX][DCA_XLL_CHANNELS_MAX];
 -    int8_t bit_width_adj_per_ch[DCA_XLL_FBANDS_MAX][DCA_XLL_CHANNELS_MAX];
 -} XllChSetSubHeader;
 -
 -typedef struct XllNavi {
 -    GetBitContext gb;  // Context for parsing the data segments
 -    unsigned band_size[DCA_XLL_FBANDS_MAX];
 -    unsigned segment_size[DCA_XLL_FBANDS_MAX][DCA_XLL_SEGMENTS_MAX];
 -    unsigned chset_size[DCA_XLL_FBANDS_MAX][DCA_XLL_SEGMENTS_MAX][DCA_XLL_CHSETS_MAX];
 -} XllNavi;
 -
 -typedef struct QMF64_table {
 -    float dct4_coeff[32][32];
 -    float dct2_coeff[32][32];
 -    float rcos[32];
 -    float rsin[32];
 -} QMF64_table;
 -
 -/* Primary audio coding header */
 -typedef struct DCAAudioHeader {
 -    int subband_activity[DCA_PRIM_CHANNELS_MAX];    ///< subband activity count
 -    int vq_start_subband[DCA_PRIM_CHANNELS_MAX];    ///< high frequency vq start subband
 -    int joint_intensity[DCA_PRIM_CHANNELS_MAX];     ///< joint intensity coding index
 -    int transient_huffman[DCA_PRIM_CHANNELS_MAX];   ///< transient mode code book
 -    int scalefactor_huffman[DCA_PRIM_CHANNELS_MAX]; ///< scale factor code book
 -    int bitalloc_huffman[DCA_PRIM_CHANNELS_MAX];    ///< bit allocation quantizer select
 -    int quant_index_huffman[DCA_PRIM_CHANNELS_MAX][DCA_ABITS_MAX];  ///< quantization index codebook select
 -    uint32_t scalefactor_adj[DCA_PRIM_CHANNELS_MAX][DCA_ABITS_MAX]; ///< scale factor adjustment
 -
 -    int subframes;              ///< number of subframes
 -    int total_channels;         ///< number of channels including extensions
 -    int prim_channels;          ///< number of primary audio channels
 -} DCAAudioHeader;
 -
 -typedef struct DCAChan {
 -    DECLARE_ALIGNED(32, int32_t, subband_samples)[DCA_BLOCKS_MAX][DCA_SUBBANDS][SAMPLES_PER_SUBBAND];
 -
 -    /* Subband samples history (for ADPCM) */
 -    DECLARE_ALIGNED(32, int32_t, subband_samples_hist)[DCA_SUBBANDS][4];
 -    int hist_index;
 -
 -    /* Half size is sufficient for core decoding, but for 96 kHz data
 -     * we need QMF with 64 subbands and 1024 samples. */
 -    DECLARE_ALIGNED(32, float, subband_fir_hist)[1024];
 -    DECLARE_ALIGNED(32, float, subband_fir_noidea)[64];
 -
 -    /* Primary audio coding side information */
 -    int prediction_mode[DCA_SUBBANDS];    ///< prediction mode (ADPCM used or not)
 -    int prediction_vq[DCA_SUBBANDS];      ///< prediction VQ coefs
 -    int bitalloc[DCA_SUBBANDS];           ///< bit allocation index
 -    int transition_mode[DCA_SUBBANDS];    ///< transition mode (transients)
 -    int32_t scale_factor[DCA_SUBBANDS][2];///< scale factors (2 if transient)
 -    int joint_huff;                       ///< joint subband scale factors codebook
 -    int joint_scale_factor[DCA_SUBBANDS]; ///< joint subband scale factors
 -
 -    int32_t  high_freq_vq[DCA_SUBBANDS];  ///< VQ encoded high frequency subbands
 -} DCAChan;
 -
 -
 -typedef struct DCAContext {
 -    AVClass *class;             ///< class for AVOptions
 -    AVCodecContext *avctx;
 -    /* Frame header */
 -    int frame_type;             ///< type of the current frame
 -    int samples_deficit;        ///< deficit sample count
 -    int crc_present;            ///< crc is present in the bitstream
 -    int sample_blocks;          ///< number of PCM sample blocks
 -    int frame_size;             ///< primary frame byte size
 -    int amode;                  ///< audio channels arrangement
 -    int sample_rate;            ///< audio sampling rate
 -    int bit_rate;               ///< transmission bit rate
 -    int bit_rate_index;         ///< transmission bit rate index
 -
 -    int dynrange;               ///< embedded dynamic range flag
 -    int timestamp;              ///< embedded time stamp flag
 -    int aux_data;               ///< auxiliary data flag
 -    int hdcd;                   ///< source material is mastered in HDCD
 -    int ext_descr;              ///< extension audio descriptor flag
 -    int ext_coding;             ///< extended coding flag
 -    int aspf;                   ///< audio sync word insertion flag
 -    int lfe;                    ///< low frequency effects flag
 -    int predictor_history;      ///< predictor history flag
 -    int header_crc;             ///< header crc check bytes
 -    int multirate_inter;        ///< multirate interpolator switch
 -    int version;                ///< encoder software revision
 -    int copy_history;           ///< copy history
 -    int source_pcm_res;         ///< source pcm resolution
 -    int front_sum;              ///< front sum/difference flag
 -    int surround_sum;           ///< surround sum/difference flag
 -    int dialog_norm;            ///< dialog normalisation parameter
 +enum DCADownMixType {
 +    DCA_DMIX_TYPE_1_0,
 +    DCA_DMIX_TYPE_LoRo,
 +    DCA_DMIX_TYPE_LtRt,
 +    DCA_DMIX_TYPE_3_0,
 +    DCA_DMIX_TYPE_2_1,
 +    DCA_DMIX_TYPE_2_2,
 +    DCA_DMIX_TYPE_3_1,
  
 -    /* Primary audio coding header */
 -    DCAAudioHeader audio_header;
 -
 -    /* Primary audio coding side information */
 -    int subsubframes[DCA_SUBFRAMES_MAX];                         ///< number of subsubframes
 -    int partial_samples[DCA_SUBFRAMES_MAX];                      ///< partial subsubframe samples count
 -    float downmix_coef[DCA_PRIM_CHANNELS_MAX + 1][2];            ///< stereo downmix coefficients
 -    int dynrange_coef;                                           ///< dynamic range coefficient
 -
 -    /* Core substream's embedded downmix coefficients (cf. ETSI TS 102 114 V1.4.1)
 -     * Input:  primary audio channels (incl. LFE if present)
 -     * Output: downmix audio channels (up to 4, no LFE) */
 -    uint8_t  core_downmix;                                       ///< embedded downmix coefficients available
 -    uint8_t  core_downmix_amode;                                 ///< audio channel arrangement of embedded downmix
 -    uint16_t core_downmix_codes[DCA_PRIM_CHANNELS_MAX + 1][4];   ///< embedded downmix coefficients (9-bit codes)
 -
 -
 -    float lfe_data[2 * DCA_LFE_MAX * (DCA_BLOCKS_MAX + 4)];      ///< Low frequency effect data
 -    int lfe_scale_factor;
 -
 -    /* Subband samples history (for ADPCM) */
 -    DECLARE_ALIGNED(32, float, raXin)[32];
 -
 -    DCAChan dca_chan[DCA_PRIM_CHANNELS_MAX];
 -
 -    int output;                 ///< type of output
 -
 -    float *samples_chanptr[DCA_PRIM_CHANNELS_MAX + 1];
 -    float *extra_channels[DCA_PRIM_CHANNELS_MAX + 1];
 -    uint8_t *extra_channels_buffer;
 -    unsigned int extra_channels_buffer_size;
 -
 -    uint8_t dca_buffer[DCA_MAX_FRAME_SIZE + DCA_MAX_EXSS_HEADER_SIZE + DCA_BUFFER_PADDING_SIZE];
 -    int dca_buffer_size;        ///< how much data is in the dca_buffer
 -
 -    const int8_t *channel_order_tab;  ///< channel reordering table, lfe and non lfe
 -    GetBitContext gb;
 -    /* Current position in DCA frame */
 -    int current_subframe;
 -    int current_subsubframe;
 -
 -    int core_ext_mask;          ///< present extensions in the core substream
 -    int exss_ext_mask;          ///< Non-core extensions
 -
 -    /* XCh extension information */
 -    int xch_present;            ///< XCh extension present and valid
 -    int xch_base_channel;       ///< index of first (only) channel containing XCH data
 -    int xch_disable;            ///< whether the XCh extension should be decoded or not
 -
 -    /* XLL extension information */
 -    int xll_disable;
 -    int xll_nch_sets;           ///< number of channel sets per frame
 -    int xll_channels;           ///< total number of channels (in all channel sets)
 -    int xll_residual_channels;  ///< number of residual channels
 -    int xll_segments;           ///< number of segments per frame
 -    int xll_log_smpl_in_seg;    ///< supposedly this is "nBits4SamplLoci"
 -    int xll_smpl_in_seg;        ///< samples in segment per one frequency band for the first channel set
 -    int xll_bits4seg_size;      ///< number of bits used to read segment size
 -    int xll_banddata_crc;       ///< presence of CRC16 within each frequency band
 -    int xll_scalable_lsb;
 -    int xll_bits4ch_mask;       ///< channel position mask
 -    int xll_fixed_lsb_width;
 -    XllChSetSubHeader xll_chsets[DCA_XLL_CHSETS_MAX];
 -    XllNavi xll_navi;
 -    int *xll_sample_buf;
 -    unsigned int xll_sample_buf_size;
 -
 -    /* ExSS header parser */
 -    int static_fields;          ///< static fields present
 -    int mix_metadata;           ///< mixing metadata present
 -    int num_mix_configs;        ///< number of mix out configurations
 -    int mix_config_num_ch[4];   ///< number of channels in each mix out configuration
 +    DCA_DMIX_TYPE_COUNT
 +};
  
- extern av_export const uint32_t avpriv_dca_sample_rates[16];
 -    int profile;
 -    int one2one_map_chtospkr;
++extern av_export_avcodec const uint32_t avpriv_dca_sample_rates[16];
  
 -    int debug_flag;             ///< used for suppressing repeated error messages output
 -    AVFloatDSPContext fdsp;
 -    FFTContext imdct;
 -    SynthFilterContext synth;
 -    DCADSPContext dcadsp;
 -    QMF64_table *qmf64_table;
 -    FmtConvertContext fmt_conv;
 -} DCAContext;
 +extern const uint32_t ff_dca_sampling_freqs[16];
 +extern const uint8_t ff_dca_freq_ranges[16];
 +extern const uint8_t ff_dca_bits_per_sample[8];
  
 -extern av_export_avcodec const uint32_t avpriv_dca_sample_rates[16];
  
  /**
   * Convert bitstream to one representation based on sync marker
diff --cc libavcodec/internal.h
index 948d5461c1,0efe34f667..522032b108
--- a/libavcodec/internal.h
+++ b/libavcodec/internal.h
@@@ -391,27 -285,14 +391,37 @@@ int ff_decode_frame_props(AVCodecContex
   */
  AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx);
  
 +int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type);
 +
 +/**
 + * Check AVFrame for A53 side data and allocate and fill SEI message with A53 info
 + *
 + * @param frame      Raw frame to get A53 side data from
 + * @param prefix_len Number of bytes to allocate before SEI message
 + * @param data       Pointer to a variable to store allocated memory
 + *                   Upon return the variable will hold NULL on error or if frame has no A53 info.
 + *                   Otherwise it will point to prefix_len uninitialized bytes followed by
 + *                   *sei_size SEI message
 + * @param sei_size   Pointer to a variable to store generated SEI message length
 + * @return           Zero on success, negative error code on failure
 + */
 +int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len,
 +                     void **data, size_t *sei_size);
 +
 +/**
 + * Get an estimated video bitrate based on frame size, frame rate and coded
 + * bits per pixel.
 + */
 +int64_t ff_guess_coded_bitrate(AVCodecContext *avctx);
 +
+ #if defined(_MSC_VER) && CONFIG_SHARED
+ #ifdef BUILDING_avcodec
+ #    define av_export_avcodec __declspec(dllexport)
+ #else
+ #    define av_export_avcodec __declspec(dllimport)
+ #endif
+ #else
+ #    define av_export_avcodec
+ #endif
+ 
  #endif /* AVCODEC_INTERNAL_H */
diff --cc libavcodec/raw.h
index 24bf4cc55a,bf66671d16..28a27b1f9e
--- a/libavcodec/raw.h
+++ b/libavcodec/raw.h
@@@ -28,20 -28,12 +28,21 @@@
  #define AVCODEC_RAW_H
  
  #include "avcodec.h"
++#include "internal.h"
 +#include "libavutil/internal.h"
  
  typedef struct PixelFormatTag {
      enum AVPixelFormat pix_fmt;
      unsigned int fourcc;
  } PixelFormatTag;
  
 -extern const PixelFormatTag ff_raw_pix_fmt_tags[];
 +extern const PixelFormatTag ff_raw_pix_fmt_tags[]; // exposed through avpriv_get_raw_pix_fmt_tags()
 +
 +const struct PixelFormatTag *avpriv_get_raw_pix_fmt_tags(void);
 +
 +enum AVPixelFormat avpriv_find_pix_fmt(const PixelFormatTag *tags, unsigned int fourcc);
 +
- extern av_export const PixelFormatTag avpriv_pix_fmt_bps_avi[];
- extern av_export const PixelFormatTag avpriv_pix_fmt_bps_mov[];
++extern av_export_avcodec const PixelFormatTag avpriv_pix_fmt_bps_avi[];
++extern av_export_avcodec const PixelFormatTag avpriv_pix_fmt_bps_mov[];
  
  #endif /* AVCODEC_RAW_H */
diff --cc libavutil/internal.h
index 6f92f71e8e,7071d2a587..c4bf1466ef
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
@@@ -63,14 -57,8 +63,18 @@@
  #endif
  #endif
  
 +#if defined(_MSC_VER) && CONFIG_SHARED
- #    define av_export __declspec(dllimport)
++#ifdef BUILDING_avutil
++#    define av_export_avutil __declspec(dllexport)
 +#else
- #    define av_export
++#    define av_export_avutil __declspec(dllimport)
++#endif
++#else
++#    define av_export_avutil
 +#endif
 +
  #if HAVE_PRAGMA_DEPRECATED
 -#    if defined(__ICL)
 +#    if defined(__ICL) || defined (__INTEL_COMPILER)
  #        define FF_DISABLE_DEPRECATION_WARNINGS __pragma(warning(push)) __pragma(warning(disable:1478))
  #        define FF_ENABLE_DEPRECATION_WARNINGS  __pragma(warning(pop))
  #    elif defined(_MSC_VER)
diff --cc libavutil/xga_font_data.h
index 5e40f542e4,0000000000..69dc337120
mode 100644,000000..100644
--- a/libavutil/xga_font_data.h
+++ b/libavutil/xga_font_data.h
@@@ -1,35 -1,0 +1,35 @@@
 +/*
 + * CGA/EGA/VGA ROM font data
 + *
 + * This file is part of FFmpeg.
 + *
 + * FFmpeg is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU Lesser General Public
 + * License as published by the Free Software Foundation; either
 + * version 2.1 of the License, or (at your option) any later version.
 + *
 + * FFmpeg is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 + * Lesser General Public License for more details.
 + *
 + * You should have received a copy of the GNU Lesser General Public
 + * License along with FFmpeg; if not, write to the Free Software
 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 + */
 +
 +/**
 + * @file
 + * CGA/EGA/VGA ROM font data
 + */
 +
 +#ifndef AVUTIL_XGA_FONT_DATA_H
 +#define AVUTIL_XGA_FONT_DATA_H
 +
 +#include <stdint.h>
 +#include "internal.h"
 +
- extern av_export const uint8_t avpriv_cga_font[2048];
- extern av_export const uint8_t avpriv_vga16_font[4096];
++extern av_export_avutil const uint8_t avpriv_cga_font[2048];
++extern av_export_avutil const uint8_t avpriv_vga16_font[4096];
 +
 +#endif /* AVUTIL_XGA_FONT_DATA_H */



More information about the ffmpeg-cvslog mailing list