1cabdff1aSopenharmony_ci/* 2cabdff1aSopenharmony_ci * RAW demuxers 3cabdff1aSopenharmony_ci * Copyright (C) 2007 Aurelien Jacobs <aurel@gnuage.org> 4cabdff1aSopenharmony_ci * 5cabdff1aSopenharmony_ci * This file is part of FFmpeg. 6cabdff1aSopenharmony_ci * 7cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or 8cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 9cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either 10cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version. 11cabdff1aSopenharmony_ci * 12cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful, 13cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 14cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15cabdff1aSopenharmony_ci * Lesser General Public License for more details. 16cabdff1aSopenharmony_ci * 17cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 18cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software 19cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20cabdff1aSopenharmony_ci */ 21cabdff1aSopenharmony_ci 22cabdff1aSopenharmony_ci#ifndef AVFORMAT_RAWDEC_H 23cabdff1aSopenharmony_ci#define AVFORMAT_RAWDEC_H 24cabdff1aSopenharmony_ci 25cabdff1aSopenharmony_ci#include "avformat.h" 26cabdff1aSopenharmony_ci#include "libavutil/log.h" 27cabdff1aSopenharmony_ci#include "libavutil/opt.h" 28cabdff1aSopenharmony_ci 29cabdff1aSopenharmony_citypedef struct FFRawVideoDemuxerContext { 30cabdff1aSopenharmony_ci const AVClass *class; /**< Class for private options. */ 31cabdff1aSopenharmony_ci int raw_packet_size; 32cabdff1aSopenharmony_ci char *video_size; /**< String describing video size, set by a private option. */ 33cabdff1aSopenharmony_ci char *pixel_format; /**< Set by a private option. */ 34cabdff1aSopenharmony_ci AVRational framerate; /**< AVRational describing framerate, set by a private option. */ 35cabdff1aSopenharmony_ci} FFRawVideoDemuxerContext; 36cabdff1aSopenharmony_ci 37cabdff1aSopenharmony_citypedef struct FFRawDemuxerContext { 38cabdff1aSopenharmony_ci const AVClass *class; /**< Class for private options. */ 39cabdff1aSopenharmony_ci int raw_packet_size; 40cabdff1aSopenharmony_ci} FFRawDemuxerContext; 41cabdff1aSopenharmony_ci 42cabdff1aSopenharmony_ciextern const AVOption ff_raw_options[]; 43cabdff1aSopenharmony_ciextern const AVClass ff_rawvideo_demuxer_class; 44cabdff1aSopenharmony_ciextern const AVClass ff_raw_demuxer_class; 45cabdff1aSopenharmony_ci 46cabdff1aSopenharmony_ciint ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt); 47cabdff1aSopenharmony_ci 48cabdff1aSopenharmony_ciint ff_raw_audio_read_header(AVFormatContext *s); 49cabdff1aSopenharmony_ci 50cabdff1aSopenharmony_ciint ff_raw_video_read_header(AVFormatContext *s); 51cabdff1aSopenharmony_ci 52cabdff1aSopenharmony_ciint ff_raw_subtitle_read_header(AVFormatContext *s); 53cabdff1aSopenharmony_ci 54cabdff1aSopenharmony_ci#define FF_DEF_RAWVIDEO_DEMUXER2(shortname, longname, probe, ext, id, flag)\ 55cabdff1aSopenharmony_ciconst AVInputFormat ff_ ## shortname ## _demuxer = {\ 56cabdff1aSopenharmony_ci .name = #shortname,\ 57cabdff1aSopenharmony_ci .long_name = NULL_IF_CONFIG_SMALL(longname),\ 58cabdff1aSopenharmony_ci .read_probe = probe,\ 59cabdff1aSopenharmony_ci .read_header = ff_raw_video_read_header,\ 60cabdff1aSopenharmony_ci .read_packet = ff_raw_read_partial_packet,\ 61cabdff1aSopenharmony_ci .extensions = ext,\ 62cabdff1aSopenharmony_ci .flags = flag,\ 63cabdff1aSopenharmony_ci .raw_codec_id = id,\ 64cabdff1aSopenharmony_ci .priv_data_size = sizeof(FFRawVideoDemuxerContext),\ 65cabdff1aSopenharmony_ci .priv_class = &ff_rawvideo_demuxer_class,\ 66cabdff1aSopenharmony_ci}; 67cabdff1aSopenharmony_ci 68cabdff1aSopenharmony_ci#define FF_DEF_RAWVIDEO_DEMUXER(shortname, longname, probe, ext, id)\ 69cabdff1aSopenharmony_ciFF_DEF_RAWVIDEO_DEMUXER2(shortname, longname, probe, ext, id, AVFMT_GENERIC_INDEX) 70cabdff1aSopenharmony_ci 71cabdff1aSopenharmony_ci#define FF_DEF_RAWSUB_DEMUXER(shortname, longname, probe, ext, id, flag)\ 72cabdff1aSopenharmony_ciconst AVInputFormat ff_ ## shortname ## _demuxer = {\ 73cabdff1aSopenharmony_ci .name = #shortname,\ 74cabdff1aSopenharmony_ci .long_name = NULL_IF_CONFIG_SMALL(longname),\ 75cabdff1aSopenharmony_ci .read_probe = probe,\ 76cabdff1aSopenharmony_ci .read_header = ff_raw_subtitle_read_header,\ 77cabdff1aSopenharmony_ci .read_packet = ff_raw_read_partial_packet,\ 78cabdff1aSopenharmony_ci .extensions = ext,\ 79cabdff1aSopenharmony_ci .flags = flag,\ 80cabdff1aSopenharmony_ci .raw_codec_id = id,\ 81cabdff1aSopenharmony_ci .priv_data_size = sizeof(FFRawDemuxerContext),\ 82cabdff1aSopenharmony_ci .priv_class = &ff_raw_demuxer_class,\ 83cabdff1aSopenharmony_ci}; 84cabdff1aSopenharmony_ci 85cabdff1aSopenharmony_ci#endif /* AVFORMAT_RAWDEC_H */ 86