Merge commit 'abf1c058d1bd0ed1b820ea5e501a4484756f00b0'
authorJames Almer <jamrial@gmail.com>
Sat, 11 Nov 2017 13:32:09 +0000 (10:32 -0300)
committerJames Almer <jamrial@gmail.com>
Sat, 11 Nov 2017 14:29:16 +0000 (11:29 -0300)
* commit 'abf1c058d1bd0ed1b820ea5e501a4484756f00b0':
  msvc: Properly specify dllexport for data symbols shared across dll boundaries

Merged-by: James Almer <jamrial@gmail.com>
1  2 
ffbuild/library.mak
libavcodec/ac3tab.h
libavcodec/dca.h
libavcodec/internal.h
libavcodec/jpegtables.h
libavcodec/mpeg4audio.h
libavcodec/mpegaudiodata.h
libavcodec/raw.h
libavutil/internal.h
libavutil/xga_font_data.h

index ed269fd,0000000..f85ee1e
mode 100644,000000..100644
--- /dev/null
@@@ -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)
  
  #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];
  
  #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
@@@ -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 */
Simple merge
Simple merge
Simple merge
  #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 */
  #endif
  #endif
  
- #    define av_export __declspec(dllimport)
 +#if defined(_MSC_VER) && CONFIG_SHARED
- #    define av_export
++#ifdef BUILDING_avutil
++#    define av_export_avutil __declspec(dllexport)
 +#else
++#    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)
index 5e40f54,0000000..69dc337
mode 100644,000000..100644
--- /dev/null
@@@ -1,35 -1,0 +1,35 @@@
- extern av_export const uint8_t avpriv_cga_font[2048];
- extern av_export const uint8_t avpriv_vga16_font[4096];
 +/*
 + * 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_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 */