annotate ffmpeg/libavformat/riff.h @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents f445c3017523
children
rev   line source
yading@11 1 /*
yading@11 2 * RIFF common functions and data
yading@11 3 * copyright (c) 2000 Fabrice Bellard
yading@11 4 *
yading@11 5 * This file is part of FFmpeg.
yading@11 6 *
yading@11 7 * FFmpeg is free software; you can redistribute it and/or
yading@11 8 * modify it under the terms of the GNU Lesser General Public
yading@11 9 * License as published by the Free Software Foundation; either
yading@11 10 * version 2.1 of the License, or (at your option) any later version.
yading@11 11 *
yading@11 12 * FFmpeg is distributed in the hope that it will be useful,
yading@11 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
yading@11 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
yading@11 15 * Lesser General Public License for more details.
yading@11 16 *
yading@11 17 * You should have received a copy of the GNU Lesser General Public
yading@11 18 * License along with FFmpeg; if not, write to the Free Software
yading@11 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
yading@11 20 */
yading@11 21
yading@11 22 /**
yading@11 23 * @file
yading@11 24 * internal header for RIFF based (de)muxers
yading@11 25 * do NOT include this in end user applications
yading@11 26 */
yading@11 27
yading@11 28 #ifndef AVFORMAT_RIFF_H
yading@11 29 #define AVFORMAT_RIFF_H
yading@11 30
yading@11 31 #include "libavcodec/avcodec.h"
yading@11 32 #include "avio.h"
yading@11 33 #include "internal.h"
yading@11 34 #include "metadata.h"
yading@11 35
yading@11 36 extern const AVMetadataConv ff_riff_info_conv[];
yading@11 37 extern const char ff_riff_tags[][5];
yading@11 38
yading@11 39 int64_t ff_start_tag(AVIOContext *pb, const char *tag);
yading@11 40 void ff_end_tag(AVIOContext *pb, int64_t start);
yading@11 41
yading@11 42 /**
yading@11 43 * Read BITMAPINFOHEADER structure and set AVStream codec width, height and
yading@11 44 * bits_per_encoded_sample fields. Does not read extradata.
yading@11 45 * @return codec tag
yading@11 46 */
yading@11 47 int ff_get_bmp_header(AVIOContext *pb, AVStream *st, unsigned *esize);
yading@11 48
yading@11 49 void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf);
yading@11 50 int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc);
yading@11 51 enum AVCodecID ff_wav_codec_get_id(unsigned int tag, int bps);
yading@11 52 int ff_get_wav_header(AVIOContext *pb, AVCodecContext *codec, int size);
yading@11 53
yading@11 54 extern const AVCodecTag ff_codec_bmp_tags[]; // exposed through avformat_get_riff_video_tags()
yading@11 55 extern const AVCodecTag ff_codec_wav_tags[];
yading@11 56
yading@11 57 void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, int *au_ssize, int *au_scale);
yading@11 58
yading@11 59 typedef uint8_t ff_asf_guid[16];
yading@11 60
yading@11 61 int ff_read_riff_info(AVFormatContext *s, int64_t size);
yading@11 62
yading@11 63 #define FF_PRI_GUID \
yading@11 64 "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
yading@11 65 #define FF_ARG_GUID(g) \
yading@11 66 g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15]
yading@11 67
yading@11 68 static av_always_inline int ff_guidcmp(const void *g1, const void *g2)
yading@11 69 {
yading@11 70 return memcmp(g1, g2, sizeof(ff_asf_guid));
yading@11 71 }
yading@11 72
yading@11 73 void ff_get_guid(AVIOContext *s, ff_asf_guid *g);
yading@11 74
yading@11 75 typedef struct {
yading@11 76 enum AVCodecID id;
yading@11 77 ff_asf_guid guid;
yading@11 78 } AVCodecGuid;
yading@11 79
yading@11 80 enum AVCodecID ff_codec_guid_get_id(const AVCodecGuid *guids, ff_asf_guid guid);
yading@11 81
yading@11 82 extern const AVCodecGuid ff_codec_wav_guids[];
yading@11 83
yading@11 84 #define FF_MEDIASUBTYPE_BASE_GUID \
yading@11 85 0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
yading@11 86
yading@11 87 /**
yading@11 88 * Write all recognized RIFF tags from s->metadata
yading@11 89 */
yading@11 90 void ff_riff_write_info(AVFormatContext *s);
yading@11 91
yading@11 92 /**
yading@11 93 * Write a single RIFF info tag
yading@11 94 */
yading@11 95 void ff_riff_write_info_tag(AVIOContext *pb, const char *tag, const char *str);
yading@11 96
yading@11 97 #endif /* AVFORMAT_RIFF_H */