{"id":1542,"date":"2015-05-31T11:22:16","date_gmt":"2015-05-31T09:22:16","guid":{"rendered":"https:\/\/alax.info\/blog\/?p=1542"},"modified":"2015-05-29T17:44:24","modified_gmt":"2015-05-29T15:44:24","slug":"gdcl-mpeg-4-filters-update","status":"publish","type":"post","link":"https:\/\/alax.info\/blog\/1542","title":{"rendered":"GDCL MPEG-4 filters update"},"content":{"rendered":"<p>As mentioned recently in <a href=\"https:\/\/alax.info\/blog\/1534\">DirectShowSpy media sample trace update<\/a>, I uploaded a fork of MPEG-4 filters developed by <a href=\"http:\/\/www.gdcl.co.uk\/mpeg4\/\">Geraint Davies<\/a>, which includes a few updates made over time. They are worth mentioning in a separate post:<\/p>\n<ul>\n<li>the projects received type libraries and it is easier to reference filters now by <code>#import<\/code>ing the type library into your project, with class and interface definitions<\/li>\n<li>added support for seeking to key frame, positioning loop without thread re-creation, ability to query for all frame times in the file including frame flags &#8211; all together this makes a base for playback with good scrubbing performance and user experience<\/li>\n<li>fixed a few bugs (resulting file might be not playable in WMP, seeking esp. when scrubbing results in media samples set off by small amount of time, maybe other)<\/li>\n<li>ability to affect multiplexer memory allocator and its properties<\/li>\n<li>support for raw video formats, so that MP4 container could be used as a temporary storage for raw captured video (it&#8217;s a good choice because the container format is not bloated and has no file size constraints unlike e.g. AVI implementations)<\/li>\n<li>ability to write a secondary helper temporary file to keep important data, which lets one fix broken capture sessions; an incomplete MP4 file is typically a piece of garbage but with this file it can be restored up to crash point (think of multi-hour recordings) &#8211; this needs to be elaborated and some time in future there could possibly be a tool that does the job<\/li>\n<li>last but not least, DirectShowSpy integration; the code is easy to remove or disable because it is put inside <code>#if defined(ALAXINFODIRECTSHOWSPY_AVAILABLE)<\/code> sections; integration serves both as example of how to leverage DirectShowSpy media sample traces and also to provide pre-built filters with enabled tracing<\/li>\n<\/ul>\n<h3>Source<\/h3>\n<ul>\n<li>Welcome to Github: <a href=\"https:\/\/github.com\/roman380\/gdcl.co.uk-mpeg4\">gdcl.co.uk-mpeg4<\/a> repository<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>As mentioned recently in DirectShowSpy media sample trace update, I uploaded a fork of MPEG-4 filters developed by Geraint Davies, which includes a few updates made over time. They are worth mentioning in a separate post: the projects received type libraries and it is easier to reference filters now by #importing the type library into&hellip; <\/p>\n<p><a class=\"moretag\" href=\"https:\/\/alax.info\/blog\/1542\">Read the full article<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[78,471],"class_list":["post-1542","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-directshow","tag-mpeg-4"],"_links":{"self":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/1542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/comments?post=1542"}],"version-history":[{"count":0,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/1542\/revisions"}],"wp:attachment":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/media?parent=1542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/categories?post=1542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/tags?post=1542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}