| 1 | /*
|
|---|
| 2 | I ran these two tests:
|
|---|
| 3 | testcase | ffmpeg -v 9 -loglevel 99 -f rawvideo -video_size 256x256 -pix_fmt bgr24 -i - -sws_flags lanczos -f rawvideo -pix_fmt yuv420p out1.raw
|
|---|
| 4 | testcase | ffmpeg -v 9 -loglevel 99 -f rawvideo -video_size 256x256 -pix_fmt bgr24 -i - -filter format=rgb24 -sws_flags lanczos -f rawvideo -pix_fmt yuv420p out2.raw
|
|---|
| 5 |
|
|---|
| 6 | Full console output is below. testcase the executable built from this source file.
|
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 | testcase | ffmpeg -v 9 -loglevel 99 -f rawvideo -video_size 256x256 -pix_fmt bgr24 -i - -sws_flags lanczos -f rawvideo -pix_fmt yuv420p out1.raw
|
|---|
| 14 |
|
|---|
| 15 | ffmpeg version N-37541-g670229e Copyright (c) 2000-2012 the FFmpeg developers
|
|---|
| 16 | built on Feb 3 2012 20:07:47 with gcc 4.6.2
|
|---|
| 17 | configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
|
|---|
| 18 | ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
|
|---|
| 19 | ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
|
|---|
| 20 | able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
|
|---|
| 21 | -enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
|
|---|
| 22 | c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
|
|---|
| 23 | libxvid --enable-zlib
|
|---|
| 24 | libavutil 51. 37.100 / 51. 37.100
|
|---|
| 25 | libavcodec 54. 0.102 / 54. 0.102
|
|---|
| 26 | libavformat 54. 0.100 / 54. 0.100
|
|---|
| 27 | libavdevice 53. 4.100 / 53. 4.100
|
|---|
| 28 | libavfilter 2. 61.100 / 2. 61.100
|
|---|
| 29 | libswscale 2. 1.100 / 2. 1.100
|
|---|
| 30 | libswresample 0. 6.100 / 0. 6.100
|
|---|
| 31 | libpostproc 52. 0.100 / 52. 0.100
|
|---|
| 32 | [rawvideo @ 003A98E0] All info found
|
|---|
| 33 | [rawvideo @ 003A98E0] Estimating duration from bitrate, this may be inaccurate
|
|---|
| 34 | Input #0, rawvideo, from 'pipe:':
|
|---|
| 35 | Duration: N/A, start: 0.000000, bitrate: N/A
|
|---|
| 36 | Stream #0:0, 1, 1/25: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 256x256
|
|---|
| 37 | , 1/25, 25 tbr, 25 tbn, 25 tbc
|
|---|
| 38 | [buffer @ 003AFE80] w:256 h:256 pixfmt:bgr24 tb:1/1000000 sar:0/1 sws_param:
|
|---|
| 39 | [buffersink @ 003AFF60] auto-inserting filter 'auto-inserted scale 0' between th
|
|---|
| 40 | e filter 'src' and the filter 'out'
|
|---|
| 41 | [scale @ 038540E0] w:256 h:256 fmt:bgr24 -> w:256 h:256 fmt:yuv420p flags:0x200
|
|---|
| 42 | Output #0, rawvideo, to 'out1.raw':
|
|---|
| 43 | Metadata:
|
|---|
| 44 | encoder : Lavf54.0.100
|
|---|
| 45 | Stream #0:0, 0, 1/90000: Video: rawvideo (I420 / 0x30323449), yuv420p, 256x2
|
|---|
| 46 | 56, 1/25, q=2-31, 200 kb/s, 90k tbn, 25 tbc
|
|---|
| 47 | Stream mapping:
|
|---|
| 48 | Stream #0:0 -> #0:0 (rawvideo -> rawvideo)
|
|---|
| 49 | frame= 1 fps= 0 q=0.0 Lsize= 96kB time=00:00:00.04 bitrate=19660.8kbits
|
|---|
| 50 | /s
|
|---|
| 51 | video:96kB audio:0kB global headers:0kB muxing overhead 0.000000%
|
|---|
| 52 |
|
|---|
| 53 | testcase | ffmpeg -v 9 -loglevel 99 -f rawvideo -video_size 256x256 -pix_fmt bgr24 -i - -filter format=rgb24 -sws_flags lanczos -f rawvideo -pix_fmt yuv420p out2.raw
|
|---|
| 54 |
|
|---|
| 55 | ffmpeg version N-37541-g670229e Copyright (c) 2000-2012 the FFmpeg developers
|
|---|
| 56 | built on Feb 3 2012 20:07:47 with gcc 4.6.2
|
|---|
| 57 | configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
|
|---|
| 58 | ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
|
|---|
| 59 | ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
|
|---|
| 60 | able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
|
|---|
| 61 | -enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
|
|---|
| 62 | c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
|
|---|
| 63 | libxvid --enable-zlib
|
|---|
| 64 | libavutil 51. 37.100 / 51. 37.100
|
|---|
| 65 | libavcodec 54. 0.102 / 54. 0.102
|
|---|
| 66 | libavformat 54. 0.100 / 54. 0.100
|
|---|
| 67 | libavdevice 53. 4.100 / 53. 4.100
|
|---|
| 68 | libavfilter 2. 61.100 / 2. 61.100
|
|---|
| 69 | libswscale 2. 1.100 / 2. 1.100
|
|---|
| 70 | libswresample 0. 6.100 / 0. 6.100
|
|---|
| 71 | libpostproc 52. 0.100 / 52. 0.100
|
|---|
| 72 | [rawvideo @ 00369980] All info found
|
|---|
| 73 | [rawvideo @ 00369980] Estimating duration from bitrate, this may be inaccurate
|
|---|
| 74 | Input #0, rawvideo, from 'pipe:':
|
|---|
| 75 | Duration: N/A, start: 0.000000, bitrate: N/A
|
|---|
| 76 | Stream #0:0, 1, 1/25: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 256x256
|
|---|
| 77 | , 1/25, 25 tbr, 25 tbn, 25 tbc
|
|---|
| 78 | [buffer @ 00369E80] w:256 h:256 pixfmt:bgr24 tb:1/1000000 sar:0/1 sws_param:
|
|---|
| 79 | [buffersink @ 03973700] auto-inserting filter 'auto-inserted scale 0' between th
|
|---|
| 80 | e filter 'Parsed_format_0' and the filter 'out'
|
|---|
| 81 | [format @ 03973960] auto-inserting filter 'auto-inserted scale 1' between the fi
|
|---|
| 82 | lter 'src' and the filter 'Parsed_format_0'
|
|---|
| 83 | [scale @ 03974880] w:256 h:256 fmt:bgr24 -> w:256 h:256 fmt:rgb24 flags:0x200
|
|---|
| 84 | [scale @ 03973900] w:256 h:256 fmt:rgb24 -> w:256 h:256 fmt:yuv420p flags:0x200
|
|---|
| 85 | Output #0, rawvideo, to 'out2.raw':
|
|---|
| 86 | Metadata:
|
|---|
| 87 | encoder : Lavf54.0.100
|
|---|
| 88 | Stream #0:0, 0, 1/90000: Video: rawvideo (I420 / 0x30323449), yuv420p, 256x2
|
|---|
| 89 | 56, 1/25, q=2-31, 200 kb/s, 90k tbn, 25 tbc
|
|---|
| 90 | Stream mapping:
|
|---|
| 91 | Stream #0:0 -> #0:0 (rawvideo -> rawvideo)
|
|---|
| 92 | frame= 1 fps= 0 q=0.0 Lsize= 96kB time=00:00:00.04 bitrate=19660.8kbits
|
|---|
| 93 | /s
|
|---|
| 94 | video:96kB audio:0kB global headers:0kB muxing overhead 0.000000%
|
|---|
| 95 |
|
|---|
| 96 | */
|
|---|
| 97 |
|
|---|
| 98 |
|
|---|
| 99 | #include <stdio.h>
|
|---|
| 100 |
|
|---|
| 101 | #ifdef WIN32
|
|---|
| 102 | #include <fcntl.h>
|
|---|
| 103 | #endif
|
|---|
| 104 |
|
|---|
| 105 | int main (void)
|
|---|
| 106 | {
|
|---|
| 107 | int i, j;
|
|---|
| 108 | #ifdef WIN32
|
|---|
| 109 | setmode (fileno (stdout), O_BINARY);
|
|---|
| 110 | setmode (fileno (stdin), O_BINARY);
|
|---|
| 111 | #endif
|
|---|
| 112 |
|
|---|
| 113 |
|
|---|
| 114 | for (j = 0; j < 256; j++)
|
|---|
| 115 | {
|
|---|
| 116 | for (i = 0; i < 256; i++)
|
|---|
| 117 | {
|
|---|
| 118 | // format is bgr24
|
|---|
| 119 | // b: 0 to 240 step 16 in vertical 16 pixel stripes
|
|---|
| 120 | putchar (j / 16 * 16);
|
|---|
| 121 | // g: 0 to 240 step 16 in horizontal 16 pixel stripes
|
|---|
| 122 | putchar (i / 16 * 16);
|
|---|
| 123 | // r: constant 128
|
|---|
| 124 | putchar (128);
|
|---|
| 125 | }
|
|---|
| 126 | }
|
|---|
| 127 | return 0;
|
|---|
| 128 | }
|
|---|
| 129 |
|
|---|