rawenc.c 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. /*
  2. * RAW muxers
  3. * Copyright (c) 2001 Fabrice Bellard
  4. * Copyright (c) 2005 Alex Beregszaszi
  5. *
  6. * This file is part of FFmpeg.
  7. *
  8. * FFmpeg is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU Lesser General Public
  10. * License as published by the Free Software Foundation; either
  11. * version 2.1 of the License, or (at your option) any later version.
  12. *
  13. * FFmpeg is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. * Lesser General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Lesser General Public
  19. * License along with FFmpeg; if not, write to the Free Software
  20. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  21. */
  22. #include "avformat.h"
  23. #include "rawenc.h"
  24. int ff_raw_write_packet(AVFormatContext *s, AVPacket *pkt)
  25. {
  26. avio_write(s->pb, pkt->data, pkt->size);
  27. avio_flush(s->pb);
  28. return 0;
  29. }
  30. /* Note: Do not forget to add new entries to the Makefile as well. */
  31. #if CONFIG_AC3_MUXER
  32. AVOutputFormat ff_ac3_muxer = {
  33. "ac3",
  34. NULL_IF_CONFIG_SMALL("raw AC-3"),
  35. "audio/x-ac3",
  36. "ac3",
  37. 0,
  38. CODEC_ID_AC3,
  39. CODEC_ID_NONE,
  40. NULL,
  41. ff_raw_write_packet,
  42. .flags= AVFMT_NOTIMESTAMPS,
  43. };
  44. #endif
  45. #if CONFIG_DIRAC_MUXER
  46. AVOutputFormat ff_dirac_muxer = {
  47. "dirac",
  48. NULL_IF_CONFIG_SMALL("raw Dirac"),
  49. NULL,
  50. "drc",
  51. 0,
  52. CODEC_ID_NONE,
  53. CODEC_ID_DIRAC,
  54. NULL,
  55. ff_raw_write_packet,
  56. .flags= AVFMT_NOTIMESTAMPS,
  57. };
  58. #endif
  59. #if CONFIG_DNXHD_MUXER
  60. AVOutputFormat ff_dnxhd_muxer = {
  61. "dnxhd",
  62. NULL_IF_CONFIG_SMALL("raw DNxHD (SMPTE VC-3)"),
  63. NULL,
  64. "dnxhd",
  65. 0,
  66. CODEC_ID_NONE,
  67. CODEC_ID_DNXHD,
  68. NULL,
  69. ff_raw_write_packet,
  70. .flags= AVFMT_NOTIMESTAMPS,
  71. };
  72. #endif
  73. #if CONFIG_DTS_MUXER
  74. AVOutputFormat ff_dts_muxer = {
  75. "dts",
  76. NULL_IF_CONFIG_SMALL("raw DTS"),
  77. "audio/x-dca",
  78. "dts",
  79. 0,
  80. CODEC_ID_DTS,
  81. CODEC_ID_NONE,
  82. NULL,
  83. ff_raw_write_packet,
  84. .flags= AVFMT_NOTIMESTAMPS,
  85. };
  86. #endif
  87. #if CONFIG_EAC3_MUXER
  88. AVOutputFormat ff_eac3_muxer = {
  89. "eac3",
  90. NULL_IF_CONFIG_SMALL("raw E-AC-3"),
  91. "audio/x-eac3",
  92. "eac3",
  93. 0,
  94. CODEC_ID_EAC3,
  95. CODEC_ID_NONE,
  96. NULL,
  97. ff_raw_write_packet,
  98. .flags= AVFMT_NOTIMESTAMPS,
  99. };
  100. #endif
  101. #if CONFIG_G722_MUXER
  102. AVOutputFormat ff_g722_muxer = {
  103. "g722",
  104. NULL_IF_CONFIG_SMALL("raw G.722"),
  105. "audio/G722",
  106. "g722",
  107. 0,
  108. CODEC_ID_ADPCM_G722,
  109. CODEC_ID_NONE,
  110. NULL,
  111. ff_raw_write_packet,
  112. .flags= AVFMT_NOTIMESTAMPS,
  113. };
  114. #endif
  115. #if CONFIG_H261_MUXER
  116. AVOutputFormat ff_h261_muxer = {
  117. "h261",
  118. NULL_IF_CONFIG_SMALL("raw H.261"),
  119. "video/x-h261",
  120. "h261",
  121. 0,
  122. CODEC_ID_NONE,
  123. CODEC_ID_H261,
  124. NULL,
  125. ff_raw_write_packet,
  126. .flags= AVFMT_NOTIMESTAMPS,
  127. };
  128. #endif
  129. #if CONFIG_H263_MUXER
  130. AVOutputFormat ff_h263_muxer = {
  131. "h263",
  132. NULL_IF_CONFIG_SMALL("raw H.263"),
  133. "video/x-h263",
  134. "h263",
  135. 0,
  136. CODEC_ID_NONE,
  137. CODEC_ID_H263,
  138. NULL,
  139. ff_raw_write_packet,
  140. .flags= AVFMT_NOTIMESTAMPS,
  141. };
  142. #endif
  143. #if CONFIG_H264_MUXER
  144. AVOutputFormat ff_h264_muxer = {
  145. "h264",
  146. NULL_IF_CONFIG_SMALL("raw H.264 video format"),
  147. NULL,
  148. "h264",
  149. 0,
  150. CODEC_ID_NONE,
  151. CODEC_ID_H264,
  152. NULL,
  153. ff_raw_write_packet,
  154. .flags= AVFMT_NOTIMESTAMPS,
  155. };
  156. #endif
  157. #if CONFIG_CAVSVIDEO_MUXER
  158. AVOutputFormat ff_cavsvideo_muxer = {
  159. "cavsvideo",
  160. NULL_IF_CONFIG_SMALL("raw Chinese AVS video"),
  161. NULL,
  162. "cavs",
  163. 0,
  164. CODEC_ID_NONE,
  165. CODEC_ID_CAVS,
  166. NULL,
  167. ff_raw_write_packet,
  168. .flags= AVFMT_NOTIMESTAMPS,
  169. };
  170. #endif
  171. #if CONFIG_M4V_MUXER
  172. AVOutputFormat ff_m4v_muxer = {
  173. "m4v",
  174. NULL_IF_CONFIG_SMALL("raw MPEG-4 video format"),
  175. NULL,
  176. "m4v",
  177. 0,
  178. CODEC_ID_NONE,
  179. CODEC_ID_MPEG4,
  180. NULL,
  181. ff_raw_write_packet,
  182. .flags= AVFMT_NOTIMESTAMPS,
  183. };
  184. #endif
  185. #if CONFIG_MJPEG_MUXER
  186. AVOutputFormat ff_mjpeg_muxer = {
  187. "mjpeg",
  188. NULL_IF_CONFIG_SMALL("raw MJPEG video"),
  189. "video/x-mjpeg",
  190. "mjpg,mjpeg",
  191. 0,
  192. CODEC_ID_NONE,
  193. CODEC_ID_MJPEG,
  194. NULL,
  195. ff_raw_write_packet,
  196. .flags= AVFMT_NOTIMESTAMPS,
  197. };
  198. #endif
  199. #if CONFIG_MLP_MUXER
  200. AVOutputFormat ff_mlp_muxer = {
  201. "mlp",
  202. NULL_IF_CONFIG_SMALL("raw MLP"),
  203. NULL,
  204. "mlp",
  205. 0,
  206. CODEC_ID_MLP,
  207. CODEC_ID_NONE,
  208. NULL,
  209. ff_raw_write_packet,
  210. .flags= AVFMT_NOTIMESTAMPS,
  211. };
  212. #endif
  213. #if CONFIG_SRT_MUXER
  214. AVOutputFormat ff_srt_muxer = {
  215. .name = "srt",
  216. .long_name = NULL_IF_CONFIG_SMALL("SubRip subtitle format"),
  217. .mime_type = "application/x-subrip",
  218. .extensions = "srt",
  219. .write_packet = ff_raw_write_packet,
  220. .flags = AVFMT_NOTIMESTAMPS,
  221. .subtitle_codec = CODEC_ID_SRT,
  222. };
  223. #endif
  224. #if CONFIG_TRUEHD_MUXER
  225. AVOutputFormat ff_truehd_muxer = {
  226. "truehd",
  227. NULL_IF_CONFIG_SMALL("raw TrueHD"),
  228. NULL,
  229. "thd",
  230. 0,
  231. CODEC_ID_TRUEHD,
  232. CODEC_ID_NONE,
  233. NULL,
  234. ff_raw_write_packet,
  235. .flags= AVFMT_NOTIMESTAMPS,
  236. };
  237. #endif
  238. #if CONFIG_MPEG1VIDEO_MUXER
  239. AVOutputFormat ff_mpeg1video_muxer = {
  240. "mpeg1video",
  241. NULL_IF_CONFIG_SMALL("raw MPEG-1 video"),
  242. "video/x-mpeg",
  243. "mpg,mpeg,m1v",
  244. 0,
  245. CODEC_ID_NONE,
  246. CODEC_ID_MPEG1VIDEO,
  247. NULL,
  248. ff_raw_write_packet,
  249. .flags= AVFMT_NOTIMESTAMPS,
  250. };
  251. #endif
  252. #if CONFIG_MPEG2VIDEO_MUXER
  253. AVOutputFormat ff_mpeg2video_muxer = {
  254. "mpeg2video",
  255. NULL_IF_CONFIG_SMALL("raw MPEG-2 video"),
  256. NULL,
  257. "m2v",
  258. 0,
  259. CODEC_ID_NONE,
  260. CODEC_ID_MPEG2VIDEO,
  261. NULL,
  262. ff_raw_write_packet,
  263. .flags= AVFMT_NOTIMESTAMPS,
  264. };
  265. #endif
  266. #if CONFIG_RAWVIDEO_MUXER
  267. AVOutputFormat ff_rawvideo_muxer = {
  268. "rawvideo",
  269. NULL_IF_CONFIG_SMALL("raw video format"),
  270. NULL,
  271. "yuv,rgb",
  272. 0,
  273. CODEC_ID_NONE,
  274. CODEC_ID_RAWVIDEO,
  275. NULL,
  276. ff_raw_write_packet,
  277. .flags= AVFMT_NOTIMESTAMPS,
  278. };
  279. #endif