29 pbFormat = CoTaskMemAlloc(src->cbFormat);
32 memcpy(pbFormat, src->pbFormat, src->cbFormat);
37 dst->pbFormat = pbFormat;
45 const uint32_t *d = (
const uint32_t *) &g->Data1;
46 const uint16_t *
w = (
const uint16_t *) &g->Data2;
49 dshowdebug(
"0x%08x 0x%04x 0x%04x %02x%02x%02x%02x%02x%02x%02x%02x",
51 c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]);
62 #define dstruct(pctx, sname, var, type) \ 63 dshowdebug(" "#var":\t%"type"\n", sname->var) 66 static void dump_bih(
void *
s, BITMAPINFOHEADER *bih)
71 dstruct(s, bih, biHeight,
"ld");
73 dstruct(s, bih, biBitCount,
"d");
74 dstruct(s, bih, biCompression,
"lu");
76 (
char*) &bih->biCompression);
77 dstruct(s, bih, biSizeImage,
"lu");
78 dstruct(s, bih, biXPelsPerMeter,
"lu");
79 dstruct(s, bih, biYPelsPerMeter,
"lu");
80 dstruct(s, bih, biClrUsed,
"lu");
81 dstruct(s, bih, biClrImportant,
"lu");
92 dshowdebug(
" VideoStandard\t%lu\n", caps->VideoStandard);
93 dshowdebug(
" InputSize %ld\t%ld\n", caps->InputSize.cx, caps->InputSize.cy);
94 dshowdebug(
" MinCroppingSize %ld\t%ld\n", caps->MinCroppingSize.cx, caps->MinCroppingSize.cy);
95 dshowdebug(
" MaxCroppingSize %ld\t%ld\n", caps->MaxCroppingSize.cx, caps->MaxCroppingSize.cy);
96 dshowdebug(
" CropGranularityX\t%d\n", caps->CropGranularityX);
97 dshowdebug(
" CropGranularityY\t%d\n", caps->CropGranularityY);
98 dshowdebug(
" CropAlignX\t%d\n", caps->CropAlignX);
99 dshowdebug(
" CropAlignY\t%d\n", caps->CropAlignY);
100 dshowdebug(
" MinOutputSize %ld\t%ld\n", caps->MinOutputSize.cx, caps->MinOutputSize.cy);
101 dshowdebug(
" MaxOutputSize %ld\t%ld\n", caps->MaxOutputSize.cx, caps->MaxOutputSize.cy);
102 dshowdebug(
" OutputGranularityX\t%d\n", caps->OutputGranularityX);
103 dshowdebug(
" OutputGranularityY\t%d\n", caps->OutputGranularityY);
104 dshowdebug(
" StretchTapsX\t%d\n", caps->StretchTapsX);
105 dshowdebug(
" StretchTapsY\t%d\n", caps->StretchTapsY);
106 dshowdebug(
" ShrinkTapsX\t%d\n", caps->ShrinkTapsX);
107 dshowdebug(
" ShrinkTapsY\t%d\n", caps->ShrinkTapsY);
108 dshowdebug(
" MinFrameInterval\t%"PRId64
"\n", caps->MinFrameInterval);
109 dshowdebug(
" MaxFrameInterval\t%"PRId64
"\n", caps->MaxFrameInterval);
110 dshowdebug(
" MinBitsPerSecond\t%ld\n", caps->MinBitsPerSecond);
111 dshowdebug(
" MaxBitsPerSecond\t%ld\n", caps->MaxBitsPerSecond);
122 dshowdebug(
" MinimumChannels\t%lu\n", caps->MinimumChannels);
123 dshowdebug(
" MaximumChannels\t%lu\n", caps->MaximumChannels);
124 dshowdebug(
" ChannelsGranularity\t%lu\n", caps->ChannelsGranularity);
125 dshowdebug(
" MinimumBitsPerSample\t%lu\n", caps->MinimumBitsPerSample);
126 dshowdebug(
" MaximumBitsPerSample\t%lu\n", caps->MaximumBitsPerSample);
127 dshowdebug(
" BitsPerSampleGranularity\t%lu\n", caps->BitsPerSampleGranularity);
128 dshowdebug(
" MinimumSampleFrequency\t%lu\n", caps->MinimumSampleFrequency);
129 dshowdebug(
" MaximumSampleFrequency\t%lu\n", caps->MaximumSampleFrequency);
130 dshowdebug(
" SampleFrequencyGranularity\t%lu\n", caps->SampleFrequencyGranularity);
143 dshowdebug(
" bFixedSizeSamples\t%d\n", type->bFixedSizeSamples);
144 dshowdebug(
" bTemporalCompression\t%d\n", type->bTemporalCompression);
145 dshowdebug(
" lSampleSize\t%lu\n", type->lSampleSize);
150 dshowdebug(
" cbFormat\t%lu\n", type->cbFormat);
151 dshowdebug(
" pbFormat\t%p\n", type->pbFormat);
153 if (IsEqualGUID(&type->formattype, &FORMAT_VideoInfo)) {
154 VIDEOINFOHEADER *v = (
void *) type->pbFormat;
155 dshowdebug(
" rcSource: left %ld top %ld right %ld bottom %ld\n",
156 v->rcSource.left, v->rcSource.top, v->rcSource.right, v->rcSource.bottom);
157 dshowdebug(
" rcTarget: left %ld top %ld right %ld bottom %ld\n",
158 v->rcTarget.left, v->rcTarget.top, v->rcTarget.right, v->rcTarget.bottom);
159 dshowdebug(
" dwBitRate: %lu\n", v->dwBitRate);
160 dshowdebug(
" dwBitErrorRate: %lu\n", v->dwBitErrorRate);
161 dshowdebug(
" AvgTimePerFrame: %"PRId64
"\n", v->AvgTimePerFrame);
163 }
else if (IsEqualGUID(&type->formattype, &FORMAT_VideoInfo2)) {
164 VIDEOINFOHEADER2 *v = (
void *) type->pbFormat;
165 dshowdebug(
" rcSource: left %ld top %ld right %ld bottom %ld\n",
166 v->rcSource.left, v->rcSource.top, v->rcSource.right, v->rcSource.bottom);
167 dshowdebug(
" rcTarget: left %ld top %ld right %ld bottom %ld\n",
168 v->rcTarget.left, v->rcTarget.top, v->rcTarget.right, v->rcTarget.bottom);
169 dshowdebug(
" dwBitRate: %lu\n", v->dwBitRate);
170 dshowdebug(
" dwBitErrorRate: %lu\n", v->dwBitErrorRate);
171 dshowdebug(
" AvgTimePerFrame: %"PRId64
"\n", v->AvgTimePerFrame);
172 dshowdebug(
" dwInterlaceFlags: %lu\n", v->dwInterlaceFlags);
173 dshowdebug(
" dwCopyProtectFlags: %lu\n", v->dwCopyProtectFlags);
174 dshowdebug(
" dwPictAspectRatioX: %lu\n", v->dwPictAspectRatioX);
175 dshowdebug(
" dwPictAspectRatioY: %lu\n", v->dwPictAspectRatioY);
177 dshowdebug(
" dwReserved2: %lu\n", v->dwReserved2);
179 }
else if (IsEqualGUID(&type->formattype, &FORMAT_WaveFormatEx)) {
180 WAVEFORMATEX *fx = (
void *) type->pbFormat;
181 dshowdebug(
" wFormatTag: %u\n", fx->wFormatTag);
182 dshowdebug(
" nChannels: %u\n", fx->nChannels);
183 dshowdebug(
" nSamplesPerSec: %lu\n", fx->nSamplesPerSec);
184 dshowdebug(
" nAvgBytesPerSec: %lu\n", fx->nAvgBytesPerSec);
185 dshowdebug(
" nBlockAlign: %u\n", fx->nBlockAlign);
186 dshowdebug(
" wBitsPerSample: %u\n", fx->wBitsPerSample);
static const char * dshow_context_to_name(void *ptr)
void ff_print_VIDEO_STREAM_CONFIG_CAPS(const VIDEO_STREAM_CONFIG_CAPS *caps)
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
void ff_print_AUDIO_STREAM_CONFIG_CAPS(const AUDIO_STREAM_CONFIG_CAPS *caps)
void ff_print_AM_MEDIA_TYPE(const AM_MEDIA_TYPE *type)
static void dump_bih(AVFormatContext *s, BITMAPINFOHEADER *bih)
const AVClass * ff_dshow_context_class_ptr
static const AVClass ff_dshow_context_class
#define dstruct(pctx, sname, var, type)
Describe the class of an AVClass context structure.
void ff_printGUID(const GUID *g)
long ff_copy_dshow_media_type(AM_MEDIA_TYPE *dst, const AM_MEDIA_TYPE *src)