Index: trunk/Utilities/DirectShowReferenceSource/Sample/Generate/Generate.vcxproj
===================================================================
--- trunk/Utilities/DirectShowReferenceSource/Sample/Generate/Generate.vcxproj (revision 768)
+++ trunk/Utilities/DirectShowReferenceSource/Sample/Generate/Generate.vcxproj (revision 769)
@@ -15,4 +15,5 @@
Win32Proj
Generate
+ 10.0.15063.0
Index: trunk/Utilities/DirectShowReferenceSource/Sample/Generate/targetver.h
===================================================================
--- trunk/Utilities/DirectShowReferenceSource/Sample/Generate/targetver.h (revision 768)
+++ trunk/Utilities/DirectShowReferenceSource/Sample/Generate/targetver.h (revision 769)
@@ -13,3 +13,4 @@
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
-#include
+#include
+#include
Index: trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/Application.cpp
===================================================================
--- trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/Application.cpp (revision 768)
+++ trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/Application.cpp (revision 769)
@@ -1,4 +1,4 @@
////////////////////////////////////////////////////////////
-// Copyright (C) Roman Ryltsov, 2015-2016
+// Copyright (C) Roman Ryltsov, 2015-2017
// Created by Roman Ryltsov roman@alax.info
//
@@ -48,12 +48,43 @@
// __D(pMediaSource, E_NOINTERFACE);
//}
+
+ //const SIZE g_Extent = { 640, 360 };
+ //const LONG g_nFrameRateNumerator = 30000;
+ //const LONG g_nFrameRateDenominator = 1001;
+ //const LONG g_nDuration = 1 * 60; // 1 minutes
+ //const LONG g_nBitrate = (2 << 10) * 1000; // 2 MBps
+
+ //const SIZE g_Extent = { 720, 480 };
+ //const LONG g_nFrameRateNumerator = 90; //30 * 1000;
+ //const LONG g_nFrameRateDenominator = 1; //1001;
+ //const LONG g_nDuration = 60; //5 * 60; // 5 minutes
+ //const LONG g_nBitrate = (2 << 10) * 1000; // 2 MBps
+
+ //const SIZE g_Extent = { 1280, 720 };
+ //const LONG g_nFrameRateNumerator = 60 * 1000;
+ //const LONG g_nFrameRateDenominator = 1000;
+ //const LONG g_nDuration = 5 * 60; // 5 minutes
+ //const LONG g_nBitrate = (5 << 10) * 1000; // 5 MBps
+
+ const SIZE g_Extent = { 1920, 1080 };
+ const LONG g_nFrameRateNumerator = 25 * 1000; // frames/second
+ const LONG g_nFrameRateDenominator = 1000;
+ const LONG g_nDuration = 1 * 60; // minutes
+ const LONG g_nBitrate = (2 << 10) * 1000; // 2 MBps
+
+ //const SIZE g_Extent = { 4096, 2304 };
+ //const LONG g_nFrameRateNumerator = 50;
+ //const LONG g_nFrameRateDenominator = 1;
+ //const LONG g_nDuration = 5 * 60; // 5 minutes
+ //const LONG g_nBitrate = (2 << 10) * 1000; // 2 MBps
+
{
using namespace AlaxInfoDirectShowReferenceSource;
CComPtr pVideoMediaSource;
__C(pVideoMediaSource.CoCreateInstance(__uuidof(VideoMediaSource)));
- __C(pVideoMediaSource->SetMediaType(4096, 2304, CComVariant(_PersistHelper::StringFromIdentifier(MEDIASUBTYPE_RGB32))));
+ __C(pVideoMediaSource->SetMediaType(g_Extent.cx, g_Extent.cy, CComVariant(_PersistHelper::StringFromIdentifier(MEDIASUBTYPE_RGB32))));
//__C(pVideoMediaSource->SetMediaTypeAspectRatio(...));
- __C(pVideoMediaSource->SetMediaTypeRate(50, 1));
- __C(pVideoMediaSource->put_Duration(5.0));
+ __C(pVideoMediaSource->SetMediaTypeRate(g_nFrameRateNumerator, g_nFrameRateDenominator));
+ __C(pVideoMediaSource->put_Duration((DOUBLE) g_nDuration));
pMediaSource = pVideoMediaSource;
}
@@ -74,9 +105,13 @@
pWriterMediaType[MF_MT_MAJOR_TYPE] = MFMediaType_Video;
pWriterMediaType[MF_MT_SUBTYPE] = MFVideoFormat_H264;
- pWriterMediaType[MF_MT_AVG_BITRATE] = (UINT32) (12 << 10) * 1000; // 12 MBps
+ pWriterMediaType[MF_MT_AVG_BITRATE] = (UINT32) g_nBitrate;
pWriterMediaType[MF_MT_FRAME_RATE] = pMediaType.GetUINT64(MF_MT_FRAME_RATE);
pWriterMediaType[MF_MT_FRAME_SIZE] = pMediaType.GetUINT64(MF_MT_FRAME_SIZE);
pWriterMediaType[MF_MT_INTERLACE_MODE] = pMediaType.GetUINT32(MF_MT_INTERLACE_MODE);
pWriterMediaType[MF_MT_PIXEL_ASPECT_RATIO] = pMediaType.GetUINT64(MF_MT_PIXEL_ASPECT_RATIO);
+
+ //pWriterMediaType[MF_MT_MPEG2_PROFILE] = (UINT32) eAVEncH264VProfile_High;
+
+ pWriterMediaType.Trace();
DWORD nWriterStreamIndex;
__C(pSinkWriter->AddStream(pWriterMediaType, &nWriterStreamIndex));
@@ -88,4 +123,13 @@
__C(pSinkWriter->SetInputMediaType(nWriterStreamIndex, pMediaType, pAttributes));
}
+
+ //CRoArrayT> TransformArray;
+ //MF::CSinkWriterHelper::GetTransforms(pSinkWriter, nWriterStreamIndex, TransformArray);
+ //_A(!TransformArray.IsEmpty());
+ //MF::CCodecApi pCodecApi(TransformArray[TransformArray.GetCount() - 1]);
+ //// NOTE: H.264 Video Encoder https://msdn.microsoft.com/en-us/library/windows/desktop/dd797816
+ //pCodecApi[CODECAPI_AVEncMPVGOPSize] = (UINT32) 16;
+ //pCodecApi[CODECAPI_AVEncMPVDefaultBPictureCount] = (UINT32) 3;
+
__C(pSinkWriter->BeginWriting());
for(; ; )
Index: trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/MfGenerate.vcxproj
===================================================================
--- trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/MfGenerate.vcxproj (revision 768)
+++ trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/MfGenerate.vcxproj (revision 769)
@@ -6,7 +6,15 @@
Win32
+
+ Debug
+ x64
+
Release
Win32
+
+
+ Release
+ x64
@@ -15,8 +23,14 @@
Win32Proj
MfGenerate
- 10.0.10586.0
+ 10.0.15063.0
+ Application
+ true
+ v140
+ Unicode
+
+
Application
true
@@ -31,4 +45,11 @@
Unicode
+
+ Application
+ false
+ v140
+ true
+ Unicode
+
@@ -37,9 +58,20 @@
+
+
+
+
+
+
+ true
+ $(SolutionDir)_Bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)_Bin\$(Platform)\$(Configuration)\$(ProjectName)\
+
+
true
$(SolutionDir)_Bin\$(Platform)\$(Configuration)\
@@ -51,5 +83,25 @@
$(SolutionDir)_Bin\$(Platform)\$(Configuration)\$(ProjectName)\
+
+ false
+ $(SolutionDir)_Bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)_Bin\$(Platform)\$(Configuration)\$(ProjectName)\
+
+
+ Use
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
Use
@@ -84,4 +136,22 @@
+
+
+ Level3
+ Use
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+ true
+
+
@@ -92,5 +162,7 @@
Create
+ Create
Create
+ Create
Index: trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/targetver.h
===================================================================
--- trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/targetver.h (revision 768)
+++ trunk/Utilities/DirectShowReferenceSource/Sample/MfGenerate/targetver.h (revision 769)
@@ -13,3 +13,4 @@
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
-#include
+#include
+#include
Index: trunk/Utilities/DirectShowReferenceSource/Sample/RegisterSources/Program.cs
===================================================================
--- trunk/Utilities/DirectShowReferenceSource/Sample/RegisterSources/Program.cs (revision 768)
+++ trunk/Utilities/DirectShowReferenceSource/Sample/RegisterSources/Program.cs (revision 769)
@@ -22,6 +22,6 @@
VideoSourceFilterRegistry registry = new VideoSourceFilterRegistry();
UnregisterAll(registry);
- //int width = 1920, height = 1080;
- int width = 640, height = 480;
+ int width = 1920, height = 1080;
+ //int width = 640, height = 480;
VideoSourceFilter filter = new VideoSourceFilter();
filter.Live = true;