/*
* Copyright (C) 2005-2013 Team XBMC
* http://xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This Program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with XBMC; see the file COPYING. If not, see
* .
*
*/
#ifndef __LIBAV_HACKS_H
#define __LIBAV_HACKS_H
#include
#include
#include
#include
#include
#if LIBAVUTIL_VERSION_MICRO >= 100
#error "You should not enable libav hacks when building against FFmpeg."
#endif
#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(52,8,0)
#error "Your libav version is too old. Please update to libav-10 or git master."
#endif
// libavutil
#define AVFRAME_IN_LAVU
#define AV_CODEC_ID_OTF AV_CODEC_ID_TTF
#define AV_CODEC_ID_SUBRIP AV_CODEC_ID_FIRST_SUBTITLE
AVDictionary *av_frame_get_metadata (const AVFrame *frame);
// libavformat
int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat,
const char *format_name, const char *filename);
#define AVFORMAT_HAS_STREAM_GET_R_FRAME_RATE
AVRational av_stream_get_r_frame_rate(const AVStream *s);
// libavresample
#define SwrContext AVAudioResampleContext
struct SwrContext *swr_alloc_set_opts(struct SwrContext *s,
int64_t out_ch_layout, enum AVSampleFormat out_sample_fmt, int out_sample_rate,
int64_t in_ch_layout, enum AVSampleFormat in_sample_fmt, int in_sample_rate,
int log_offset, void *log_ctx);
int swr_init(struct SwrContext *s);
void swr_free(struct SwrContext **s);
int swr_convert(struct SwrContext *s, uint8_t **out, int out_count,
const uint8_t **in , int in_count);
int64_t swr_get_delay(struct SwrContext *s, int64_t base);
int swr_set_channel_mapping(struct SwrContext *s, const int *channel_map);
int swr_set_matrix(struct SwrContext *s, const double *matrix, int stride);
int swr_set_compensation(struct SwrContext *s, int sample_delta, int compensation_distance);
// libavfilter
#define LIBAVFILTER_AVFRAME_BASED
typedef struct {
const enum AVPixelFormat *pixel_fmts; ///< list of allowed pixel formats, terminated by AV_PIX_FMT_NONE
} AVBufferSinkParams;
AVBufferSinkParams *av_buffersink_params_alloc(void);
#define HAVE_AVFILTER_GRAPH_PARSE_PTR
int avfilter_graph_parse_ptr(AVFilterGraph *graph, const char *filters,
AVFilterInOut **inputs, AVFilterInOut **outputs,
void *log_ctx);
#endif