rawdec.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * RAW demuxers
  3. * Copyright (C) 2007 Aurelien Jacobs <aurel@gnuage.org>
  4. *
  5. * This file is part of FFmpeg.
  6. *
  7. * FFmpeg is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Lesser General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2.1 of the License, or (at your option) any later version.
  11. *
  12. * FFmpeg is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public
  18. * License along with FFmpeg; if not, write to the Free Software
  19. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20. */
  21. #ifndef AVFORMAT_RAWDEC_H
  22. #define AVFORMAT_RAWDEC_H
  23. #include "avformat.h"
  24. #include "libavutil/log.h"
  25. #include "libavutil/opt.h"
  26. typedef struct RawAudioDemuxerContext {
  27. AVClass *class;
  28. int sample_rate;
  29. int channels;
  30. } RawAudioDemuxerContext;
  31. typedef struct FFRawVideoDemuxerContext {
  32. const AVClass *class; /**< Class for private options. */
  33. char *video_size; /**< String describing video size, set by a private option. */
  34. char *pixel_format; /**< Set by a private option. */
  35. char *framerate; /**< String describing framerate, set by a private option. */
  36. } FFRawVideoDemuxerContext;
  37. extern const AVOption ff_rawvideo_options[];
  38. int ff_raw_read_header(AVFormatContext *s, AVFormatParameters *ap);
  39. int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt);
  40. int ff_raw_audio_read_header(AVFormatContext *s, AVFormatParameters *ap);
  41. int ff_raw_video_read_header(AVFormatContext *s, AVFormatParameters *ap);
  42. #define FF_RAWVIDEO_DEMUXER_CLASS(name)\
  43. static const AVClass name ## _demuxer_class = {\
  44. .class_name = #name " demuxer",\
  45. .item_name = av_default_item_name,\
  46. .option = ff_rawvideo_options,\
  47. .version = LIBAVUTIL_VERSION_INT,\
  48. };
  49. #define FF_DEF_RAWVIDEO_DEMUXER(shortname, longname, probe, ext, id)\
  50. FF_RAWVIDEO_DEMUXER_CLASS(shortname)\
  51. AVInputFormat ff_ ## shortname ## _demuxer = {\
  52. .name = #shortname,\
  53. .long_name = NULL_IF_CONFIG_SMALL(longname),\
  54. .read_probe = probe,\
  55. .read_header = ff_raw_video_read_header,\
  56. .read_packet = ff_raw_read_partial_packet,\
  57. .extensions = ext,\
  58. .flags = AVFMT_GENERIC_INDEX,\
  59. .value = id,\
  60. .priv_data_size = sizeof(FFRawVideoDemuxerContext),\
  61. .priv_class = &shortname ## _demuxer_class,\
  62. };
  63. #endif /* AVFORMAT_RAWDEC_H */