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)
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)