diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-05-08 21:10:56 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-05-08 22:02:59 +0200 |
commit | b4178a3f13784604281dc3da31383783676b8fec (patch) | |
tree | 5cbcf5e4bf9288ee4743e47e90a3dcacb45f3df0 /libavcodec/dv_profile.h | |
parent | b4b58485135dbc37a6cf8a57196157b1d67d13e1 (diff) | |
parent | b2e495afa8e23b46536e25e892157104437f4020 (diff) | |
download | ffmpeg-b4178a3f13784604281dc3da31383783676b8fec.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
rtmp: Support 'rtmp_live', an option which specifies if the media is a live stream.
av_samples_fill_array: Mark unmodified function argument as const.
lagarith: add YUY2 decoding support
Support decoding unaligned rgb24 lagarith.
dv: Split profile handling code into a separate file.
flvenc: use AVFormatContext, not AVCodecContext for logging.
mov: Remove write-only variable in mov_read_chan().
fate: Change the probe-format refs to match the final text format committed.
fate: Add avprobe as a make dependency
Add probe fate tests to test for regressions in detecting media types.
fate: Add oneline comparison method
qdm2: clip array indices returned by qdm2_get_vlc().
avplay: properly close/reopen AVAudioResampleContext on channel layout change
avcodec: do not needlessly set packet size to 0 in avcodec_encode_audio2()
avcodec: for audio encoding, reset output packet when it is not valid
avcodec: refactor avcodec_encode_audio2() to merge common branches
avcodec: remove fallbacks for AVCodec.encode() in avcodec_encode_audio2()
Conflicts:
ffplay.c
libavcodec/Makefile
libavcodec/dvdata.c
libavcodec/dvdata.h
libavcodec/qdm2.c
libavcodec/utils.c
libavformat/flvenc.c
libavformat/mov.c
tests/Makefile
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/dv_profile.h')
-rw-r--r-- | libavcodec/dv_profile.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/libavcodec/dv_profile.h b/libavcodec/dv_profile.h new file mode 100644 index 0000000000..1a2a60fefa --- /dev/null +++ b/libavcodec/dv_profile.h @@ -0,0 +1,78 @@ +/* + * This file is part of Libav. + * + * Libav 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. + * + * Libav 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 Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_DV_PROFILE_H +#define AVCODEC_DV_PROFILE_H + +#include <stdint.h> + +#include "libavutil/pixfmt.h" +#include "libavutil/rational.h" +#include "avcodec.h" + +/* minimum number of bytes to read from a DV stream in order to + determine the profile */ +#define DV_PROFILE_BYTES (6*80) /* 6 DIF blocks */ + +typedef struct DVwork_chunk { + uint16_t buf_offset; + uint16_t mb_coordinates[5]; +} DVwork_chunk; + +/* + * DVprofile is used to express the differences between various + * DV flavors. For now it's primarily used for differentiating + * 525/60 and 625/50, but the plans are to use it for various + * DV specs as well (e.g. SMPTE314M vs. IEC 61834). + */ +typedef struct DVprofile { + int dsf; /* value of the dsf in the DV header */ + int video_stype; /* stype for VAUX source pack */ + int frame_size; /* total size of one frame in bytes */ + int difseg_size; /* number of DIF segments per DIF channel */ + int n_difchan; /* number of DIF channels per frame */ + AVRational time_base; /* 1/framerate */ + int ltc_divisor; /* FPS from the LTS standpoint */ + int height; /* picture height in pixels */ + int width; /* picture width in pixels */ + AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */ + DVwork_chunk *work_chunks; /* each thread gets its own chunk of frame to work on */ + uint32_t *idct_factor; /* set of iDCT factor tables */ + enum PixelFormat pix_fmt; /* picture pixel format */ + int bpm; /* blocks per macroblock */ + const uint8_t *block_sizes; /* AC block sizes, in bits */ + int audio_stride; /* size of audio_shuffle table */ + int audio_min_samples[3]; /* min amount of audio samples */ + /* for 48kHz, 44.1kHz and 32kHz */ + int audio_samples_dist[5]; /* how many samples are supposed to be */ + /* in each frame in a 5 frames window */ + const uint8_t (*audio_shuffle)[9]; /* PCM shuffling table */ +} DVprofile; + +const DVprofile* avpriv_dv_frame_profile(const DVprofile *sys, + const uint8_t* frame, unsigned buf_size); +const DVprofile* avpriv_dv_frame_profile2(AVCodecContext* codec, const DVprofile *sys, + const uint8_t* frame, unsigned buf_size); +const DVprofile* avpriv_dv_codec_profile(AVCodecContext* codec); + +/** + * Print all allowed DV profiles into logctx at specified logging level. + */ +void ff_dv_print_profiles(void *logctx, int loglevel); + +#endif /* AVCODEC_DV_PROFILE_H */ |