diff options
Diffstat (limited to 'Src/Plugins/Input/in_dshow/Header.cpp')
-rw-r--r-- | Src/Plugins/Input/in_dshow/Header.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_dshow/Header.cpp b/Src/Plugins/Input/in_dshow/Header.cpp new file mode 100644 index 00000000..fd073dd3 --- /dev/null +++ b/Src/Plugins/Input/in_dshow/Header.cpp @@ -0,0 +1,49 @@ +#include "Header.h" +#include <windows.h> +#include "header_avi.h" +#include "header_mpg.h" +#include "header_asf.h" +#include "header_wav.h" + +extern const wchar_t *extension(const wchar_t *fn); + +Header *MakeHeader(const wchar_t *filename, bool metadata) +{ + const wchar_t *ext=extension(filename); + + Header *header=0; + if(!_wcsicmp(ext, L"asf") || !_wcsicmp(ext, L"wmv") || !_wcsicmp(ext, L"wma")) + header = new HeaderAsf(); + else if(!_wcsicmp(ext, L"avi") || !_wcsicmp(ext, L"divx")) + header = new HeaderAvi(); + else if(!_wcsicmp(ext, L"mpg") || !_wcsicmp(ext, L"mpeg")) + header = new HeaderMpg(); + else if (!_wcsicmp(ext, L"wav")) + header = new HeaderWav(); + + if (header && !header->getInfos(filename, metadata)) + { + delete header; + return 0; + } + return header; +} + +Header::Header() +{ + length = -1; + has_audio = has_video = false; + title = artist = comment = genre = album = composer = publisher = 0; + audio_nch = audio_bps = audio_srate = video_w = video_h = 0; +} + +Header::~Header() +{ + free(title); + free(artist); + free(comment); + free(genre); + free(album); + free(composer); + free(publisher); +} |