You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.5KB

  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 FFRawVideoDemuxerContext {
  27. const AVClass *class; /**< Class for private options. */
  28. char *video_size; /**< String describing video size, set by a private option. */
  29. char *pixel_format; /**< Set by a private option. */
  30. AVRational framerate; /**< AVRational describing framerate, set by a private option. */
  31. } FFRawVideoDemuxerContext;
  32. extern const AVOption ff_rawvideo_options[];
  33. int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt);
  34. int ff_raw_audio_read_header(AVFormatContext *s);
  35. int ff_raw_video_read_header(AVFormatContext *s);
  36. #define FF_RAWVIDEO_DEMUXER_CLASS(name)\
  37. static const AVClass name ## _demuxer_class = {\
  38. .class_name = #name " demuxer",\
  39. .item_name = av_default_item_name,\
  40. .option = ff_rawvideo_options,\
  41. .version = LIBAVUTIL_VERSION_INT,\
  42. };
  43. #define FF_DEF_RAWVIDEO_DEMUXER2(shortname, longname, probe, ext, id, flag)\
  44. FF_RAWVIDEO_DEMUXER_CLASS(shortname)\
  45. AVInputFormat ff_ ## shortname ## _demuxer = {\
  46. .name = #shortname,\
  47. .long_name = NULL_IF_CONFIG_SMALL(longname),\
  48. .read_probe = probe,\
  49. .read_header = ff_raw_video_read_header,\
  50. .read_packet = ff_raw_read_partial_packet,\
  51. .extensions = ext,\
  52. .flags = flag,\
  53. .raw_codec_id = id,\
  54. .priv_data_size = sizeof(FFRawVideoDemuxerContext),\
  55. .priv_class = &shortname ## _demuxer_class,\
  56. };
  57. #define FF_DEF_RAWVIDEO_DEMUXER(shortname, longname, probe, ext, id)\
  58. FF_DEF_RAWVIDEO_DEMUXER2(shortname, longname, probe, ext, id, AVFMT_GENERIC_INDEX)
  59. #endif /* AVFORMAT_RAWDEC_H */