<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Juhovh</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Juhovh"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Juhovh/"/>
	<updated>2026-11-04T16:14:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16900</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16900"/>
		<updated>2010-08-02T19:53:20Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Full screen video support in video_output macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
3) Resize support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
4) Always on top support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Commands I used to add QtCore and QtGui frameworks into the VLC-release.app:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/Library/Frameworks/QtGui.framework/Versions/4/Headers&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
make&amp;lt;br/&amp;gt;&lt;br /&gt;
make VLC-release.app&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp -R /Library/Frameworks/QtCore.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
cp -R /Library/Frameworks/QtGui.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore VLC-release.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
echo &amp;quot;[Paths]&amp;quot; &amp;gt; VLC-release.app/Contents/Resources/qt.conf&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16899</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16899"/>
		<updated>2010-08-02T19:01:13Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Full screen video support in video_output macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
3) Resize support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
4) Always on top support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Commands I used to add QtCore and QtGui frameworks into the VLC-release.app:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/Library/Frameworks/QtGui.framework/Versions/4/Headers&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
make&amp;lt;br/&amp;gt;&lt;br /&gt;
make VLC-release.app&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp -R /Library/Frameworks/QtCore.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
cp -R /Library/Frameworks/QtGui.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
echo &amp;quot;[Paths]&amp;quot; &amp;gt; VLC-release.app/Contents/Resources/qt.conf&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16898</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16898"/>
		<updated>2010-08-02T18:44:36Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Full screen video support in video_output macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
3) Resize support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
4) Always on top support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Commands I used to add QtCore and QtGui frameworks into the VLC-release.app:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
make&amp;lt;br/&amp;gt;&lt;br /&gt;
make VLC-release.app&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp -R /Library/Frameworks/QtCore.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
cp -R /Library/Frameworks/QtGui.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
echo &amp;quot;[Paths]&amp;quot; &amp;gt; VLC-release.app/Contents/Resources/qt.conf&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16897</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16897"/>
		<updated>2010-08-02T18:37:51Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Full screen video support in video_output macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
3) Resize support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
4) Always on top support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Commands I used to add QtCore and QtGui frameworks into the VLC-release.app:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/Library/Frameworks/QtGui.framework/Versions/4/Headers&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
make&amp;lt;br/&amp;gt;&lt;br /&gt;
make VLC-release.app&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp -R /Library/Frameworks/QtCore.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
cp -R /Library/Frameworks/QtGui.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
echo &amp;quot;[Paths]&amp;quot; &amp;gt; VLC-release.app/Contents/Resources/qt.conf&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16895</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16895"/>
		<updated>2010-08-02T15:49:57Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Full screen video support in video_output macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
3) Resize support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
4) Always on top support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Commands I used to add QtCore and QtGui frameworks into the VLC-release.app:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/Library/Frameworks/QtGui.framework/Versions/4/Headers&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
make&amp;lt;br/&amp;gt;&lt;br /&gt;
make VLC-release.app&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cp -R /Library/Frameworks/QtCore.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
cp -R /Library/Frameworks/QtGui.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16894</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16894"/>
		<updated>2010-08-02T14:36:24Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Full screen video support in video_output macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
3) Resize support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
4) Always on top support in video_out macosx module&amp;lt;br/&amp;gt;&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Commands I used to add QtCore and QtGui frameworks into the VLC-release.app:&lt;br /&gt;
&lt;br /&gt;
cp -R /Library/Frameworks/QtCore.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
cp -R /Library/Frameworks/QtGui.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16893</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16893"/>
		<updated>2010-08-02T14:35:39Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&lt;br /&gt;
2) Full screen video support in video_output macosx module&lt;br /&gt;
3) Resize support in video_out macosx module&lt;br /&gt;
4) Always on top support in video_out macosx module&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Commands I used to add QtCore and QtGui frameworks into the VLC-release.app:&lt;br /&gt;
&lt;br /&gt;
cp -R /Library/Frameworks/QtCore.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
cp -R /Library/Frameworks/QtGui.framework VLC-release.app/Contents/Frameworks&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&amp;lt;br/&amp;gt;&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16892</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16892"/>
		<updated>2010-08-02T14:35:09Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&lt;br /&gt;
2) Full screen video support in video_output macosx module&lt;br /&gt;
3) Resize support in video_out macosx module&lt;br /&gt;
4) Always on top support in video_out macosx module&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Commands I used to add QtCore and QtGui frameworks into the VLC-release.app:&lt;br /&gt;
&lt;br /&gt;
cp -R /Library/Frameworks/QtCore.framework VLC-release.app/Contents/Frameworks&lt;br /&gt;
cp -R /Library/Frameworks/QtGui.framework VLC-release.app/Contents/Frameworks&lt;br /&gt;
&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore&lt;br /&gt;
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&lt;br /&gt;
&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&lt;br /&gt;
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui VLC-release.app/Contents/MacOS/plugins/libqt4_plugin.dylib&lt;br /&gt;
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore VLC-release.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16891</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16891"/>
		<updated>2010-08-02T10:41:31Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got all the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&lt;br /&gt;
2) Full screen video support in video_output macosx module&lt;br /&gt;
3) Resize support in video_out macosx module&lt;br /&gt;
4) Always on top support in video_out macosx module&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16890</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16890"/>
		<updated>2010-08-02T10:40:00Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got the last of the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface. I also have some patches in queue that are not merged yet, mainly support for double-clicking video files on Mac and fixes in the menu issues. There are still some things with the Mac OS X Qt4 interface that have quite high priority:&lt;br /&gt;
&lt;br /&gt;
1) Fixing the crash if libvlc_Quit is called during video playback&lt;br /&gt;
2) Full screen video support in video_output macosx module&lt;br /&gt;
3) Resize support in video_out macosx module&lt;br /&gt;
4) Always on top support in video_out macosx module&lt;br /&gt;
5) Testing a distributable VLC.app that includes the Qt4 binaries&lt;br /&gt;
&lt;br /&gt;
After these changes I believe I can start using Qt4 interface as my main VLC interface on Mac. Hopefully this will make it possible to get rid of the old Mac OS X interface and give Mac OS X developers more time to work on Lunettes, since Lunettes surely has its own target group that won&#039;t be satisfied with Qt4 interface.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16887</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16887"/>
		<updated>2010-07-31T20:07:01Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A lot of time this week went into debugging Qt4 dialogs, but later I found most of the problems were related into me having a buggy Qt 4.7 binary installed on my computer. The time didn&#039;t go to waste though, since I got to study the code quite thoroughly. I also got the last of the patches prepared last week to upstream, which means that the master of VLC is now pretty usable on Mac with the Qt4 interface.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16886</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16886"/>
		<updated>2010-07-31T16:26:12Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16885</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16885"/>
		<updated>2010-07-31T16:12:47Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4 --enable-skins2 --disable-macosx --disable-nls&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16863</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16863"/>
		<updated>2010-07-26T09:30:19Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probably my most productive week so far, got most of the Mac OS X related Qt4 interface patches upstream with only one major patch remaining. I&#039;ll be doing cosmetic changes and interface bug fixes in the qt4-macosx branch for now, and will probably collect several patches together and send them to review and discussion next week. I think after getting the fullscreen to work properly I can at least personally take the Qt4 interface as my main VLC interface on Mac. Other than being ugly it doesn&#039;t have any major issues.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16844</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16844"/>
		<updated>2010-07-19T21:02:18Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Still haven&#039;t got my computer out of the service, but my school was nice enough to provide me with my own computer for now, because it&#039;s quiet there during the summer. I went through the bugs #3796 and #3797 and sent the ASF patches I had to the mailing list. The suggested fix for #3796 was not accepted, but after looking through the code I have an idea how it could be fixed now without breaking anything else.&lt;br /&gt;
&lt;br /&gt;
The bug #3797 is a bit more difficult, because to be able to select a language on the mms plugin I would need to get information to either ASF plugin or MMS plugin about the elementary stream that is selected or unselected. All I found was INPUT_EVENT_ES event, but that&#039;s apparently used for interfaces and not so much for the plugins... Is there a way I could get information about the selected streams to the ASF plugin for example?&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_projects&amp;diff=16843</id>
		<title>SoC 2010 projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_projects&amp;diff=16843"/>
		<updated>2010-07-19T20:54:00Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of the accepted projects for Google Summer of Code 2010.&lt;br /&gt;
&lt;br /&gt;
= List of current VLC projects  =&lt;br /&gt;
&lt;br /&gt;
== Shader support for video post-processing  ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: [[SoC 2010 Shader Support]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Skoruga|Sasha Koruga]] &lt;br /&gt;
*&#039;&#039;&#039;Mentor&#039;&#039;&#039;: Adrien Maglo &lt;br /&gt;
*&#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
A lot of video post-processing such as RGB-YUV conversion can be accelerated by using the GPU. This can either be achieved through a fragment shader, where it is the last step before a pixel is displayed on the screen, or it can be done with DirectCompute/CUDA/OpenCL. The method will vary depending on the task and intent. I will implement support for shaders by using the DirectX and OpenGL API and write a few shaders such as RGB-YUV conversion. &lt;br /&gt;
&lt;br /&gt;
== Port VLC Player to Symbian Platform  ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: [[SoC 2010 Shader Support]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:pk2010|Pankaj Yadav]] &lt;br /&gt;
*&#039;&#039;&#039;Mentor&#039;&#039;&#039;: Rémi Duraffort&lt;br /&gt;
*&#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
To port VLC Player to Symbian S60 Platform.&lt;br /&gt;
&lt;br /&gt;
== ASF demuxer  ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: [[SoC 2010 ASF Demuxer]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Juhovh|Juho Vähä-Herttua]] &lt;br /&gt;
*&#039;&#039;&#039;Mentor&#039;&#039;&#039;: Ilkka Ollakka &lt;br /&gt;
*&#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve the ASF demuxer as much as I can and then find another similar project to work on the rest of the time. &lt;br /&gt;
&lt;br /&gt;
== Implementing BD-J support in libbluray and VLC  ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: [[SoC 2010/Implementing BD-J support in libbluray and VLC]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Will07c5|William Hahne]] &lt;br /&gt;
*&#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Jpsaman|Jean-Paul Saman]] &lt;br /&gt;
*&#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project will focus primarily on getting BD-J (Blu-ray Disc Java) support into libbluray. BD-J support is important because many of the advanced features and extra content in Blu-ray movies uses BD-J. Currently people with Blu-ray drives are tied to Windows if they want to access this content, they are forced to use proprietary Blu-ray software which does not run on Linux or various other operating systems. This project will also integrate the BD-J support into VLC. &lt;br /&gt;
&lt;br /&gt;
== Interface for mobile phones (WinCE and others)  ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: &#039;&#039;&#039;[[SoC 2010/Interface for mobile phones|&#039;&#039;&#039;Interface for mobile phones&amp;lt;br&amp;gt;&#039;&#039;&#039;]] &lt;br /&gt;
*&#039;&#039;&#039;Student:&#039;&#039;&#039; [[User:Vnik|Kumar Anik]]&amp;lt;br&amp;gt; &lt;br /&gt;
*&#039;&#039;&#039;&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;Mentor:&#039;&#039;&#039; [[User:Geal|Geoffroy Couprie]]&amp;lt;br&amp;gt; &lt;br /&gt;
*&#039;&#039;&#039;Abstract: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To develop a GUI for Mobiles, especially WinCE ones.&lt;br /&gt;
&lt;br /&gt;
== Ogg demuxer  ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: [[SoC 2010 Ogg Demuxer]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:salsaman|salsaman]] &lt;br /&gt;
*&#039;&#039;&#039;Mentor&#039;&#039;&#039;: Christophe Mutricy&lt;br /&gt;
*&#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
I was selected to rewrite the ogg demuxer. I wrote an ogg/theora demuxer already for LiVES, but I am in the process of learning about other stream types within ogg (e.g. dirac, vorbis, kate, speex and flac).&lt;br /&gt;
&lt;br /&gt;
== DLNA UPnP Server/Client Modules ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: [[SoC 2010/DLNA UPnP Server Client Modules]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Aust|Austin Burrow]] &lt;br /&gt;
*&#039;&#039;&#039;Mentor&#039;&#039;&#039;: Konstantin Pavlov&lt;br /&gt;
*&#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Implement Server/Client modules into VLC that are compatible with the DLNA specification for UPnP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Media Library integration and LV2 Audio filters ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: [[SoC 2010/Media Library and LV2]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:jetru|Srikanth Raju]] &lt;br /&gt;
*&#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:J-Peg|Jean-Philippe André]]&lt;br /&gt;
*&#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Complete integrating Media Library with the VLC UI and also implement LV2 filters module&lt;br /&gt;
&lt;br /&gt;
== [De]Muxer/Codec Layer fixes and improvements ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Project page: [[SoC 2010/Demux and codec layer improvements]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:jai|Jai Menon]] &lt;br /&gt;
*&#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:J-b|Jean-Baptiste Kempf]]&lt;br /&gt;
*&#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project aims at improving the current [de]mux and codec layer in VLC with a specific focus on matroska and the avformat/avcodec wrappers. Details on what is being worked on would be tracked on the project page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of current x264 projects =&lt;br /&gt;
==Support for high bit depth encoding==&lt;br /&gt;
* &#039;&#039;&#039;Project page&#039;&#039;&#039;: [[SoC 2010/High Bit Depth Encoding]]&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Irock|Oskar Arvidsson]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Holger|Holger Lubitz]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The primary goal for this project is to prepare the code base of x264 for encoding H.264 video with user defined sample depths. This will involve templating the encoder and migrating existing C code for use with higher sample depths.&lt;br /&gt;
&lt;br /&gt;
==Audio support==&lt;br /&gt;
* &#039;&#039;&#039;Project page&#039;&#039;&#039;: [[SoC 2010/Audio on x264]]&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Kovensky|Diogo Franco]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Dark_Shikari|Jason Garret-Glaser]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Implement an audio filtering system that allows transcoding of audio with resampling, sample format conversion and channel remixing.&lt;br /&gt;
This is meant to be used for using with the soon-to-be-merged video filtering system for doing transcoding using only x264.&lt;br /&gt;
Is also a prerequisite for the planned --device option that will automatically downscale the video if needed, set the appropriate H.264 level options and transcode to the appropriate audio codec.&lt;br /&gt;
&lt;br /&gt;
==Macroblock adaptive frame-field interlacing==&lt;br /&gt;
* &#039;&#039;&#039;Project page&#039;&#039;&#039;: [[SoC 2010/Macroblock adaptive frame field interlacing]]&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Simonhorlick|Simon Horlick-Loach]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: [[User:Dark_Shikari|Jason Garret-Glaser]]&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently x264 supports interlaced encoding with MBAFF frame structure where each macroblock is encoded as interlaced. This project will implement full adaptive interlacing support where macroblocks are encoded as progressive or interlaced depending on their content.&lt;br /&gt;
&lt;br /&gt;
= List of current VLMC projects =&lt;br /&gt;
==VLMC Youtube Integration+==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2010/Youtube Integration VLMC|SoC 2010/Youtube Integration in VLMC]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Rohityadav|Rohit Yadav]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Ludovic &#039;etix&#039; Fauvet&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Youtube is the most popular video sharing website, right now. VLMC is a video editing software and having features in VLMC to search-retrieve videos, directly upload/update/delete videos on Youtube, within the application itself, would be awesome. The aim of this project is to write a small C++/Qt based Youtube client library for VLMC that provides her all the APIs to perform all those things.&lt;br /&gt;
&lt;br /&gt;
= List of current Phonon projects =&lt;br /&gt;
== PCM I/O API ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page&#039;&#039;&#039;: [[SoC 2010/PCM IO API (Phonon)]]&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Mforney|Michael Forney]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Jean-Baptiste Kempf&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Design a fully featured PCM I/O API for Phonon, and provide an implementation for the Phonon-VLC backend and one other (either MPlayer or Xine). This API will allow developers to capture PCM data from devices like a sound card, or to play back raw audio from memory, or elsewhere. This will provide some important missing features in Phonon, and open the door for many applications waiting to make use of an API like this.&lt;br /&gt;
&lt;br /&gt;
[[Category:SoC_2010_Project]][[Category:SoC]]&lt;br /&gt;
&lt;br /&gt;
== Capture API ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2010 Phonon Capture API]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Skelet|Casian Andrei]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Hugo Beauzee-Luyssen&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to enable Phonon applications to access and display input devices, like webcams. The Phonon code-base is well designed and flexible, and apparently no major modifications are needed to the current API. The ease of use for the Phonon application developer is a priority. Features implemented in Phonon will be implemented in the Phonon-VLC back-end in parallel. Various device classes should be supported.&lt;br /&gt;
&lt;br /&gt;
[[Category:SoC_2010_Project]][[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16779</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16779"/>
		<updated>2010-07-13T07:48:48Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&#039;&#039;&#039;Updated timeline can be seen in Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16778</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16778"/>
		<updated>2010-07-13T07:48:27Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From Tuesday to Sunday I was practically without a computer. During Monday I went through the old Mac OS X interface code a little bit, commits in [http://github.com/juhovh/vlc/commits/macosx repository]. But j-b probably cleaned up the code a bit better in his patches that also included the voutgl.m that I simply removed. If I can get my laptop back I should merge j-b&#039;s patches as well to see if it could be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || Merge new ASF object definitions to VLC, test QMacCocoaViewContainer&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || Add handling of mutual exclusions to ASF code to fix [http://trac.videolan.org/vlc/ticket/3796 bug 3796].&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Find out how the language support could be added to mms as reported in [http://trac.videolan.org/vlc/ticket/3797 bug 3797], see if the libasf.* files from asf lugin could be used in the mms plugin to remove code duplication.&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Start finishing up, make sure that the patches are ok.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16442</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16442"/>
		<updated>2010-07-06T11:17:54Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;br /&gt;
&lt;br /&gt;
And I might need some consulting in the Mac OS X video_output module later, since the Qt4 port is mainly stuck on that. When playing everything seems to work correctly, but there&#039;s no video shown. If that could be fixed then porting the old Mac OS X interface to 1.2 wouldn&#039;t be a problem either. But my only computer&#039;s (Mac laptop) keyboard just broke and I have to take it to the service. I hope they fix it fast, in the meantime I&#039;ll try to use school computers...&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16441</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16441"/>
		<updated>2010-07-06T11:14:53Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Made a list of all known ASF objects in a header file http://www.vaha-herttua.fi/public/object.h.txt, most of the week went spending Finnish midsummer though....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Started with an attempt to merge the VLC&#039;s ASF code into libasf http://code.google.com/p/libasf/ that I&#039;ve used elsewhere. This was largely a wasted effort though, since the libasf.c in VLC is a _huge_ piece of code and rewriting that by hand is not sensible. It should be either run through some regexps or not done at all, I think it makes more sense to port the changes from libasf to VLC instead, which would make more sense.&lt;br /&gt;
&lt;br /&gt;
What wasn&#039;t so much wasted effort was the reviewing of the VLC&#039;s ASF code though, and I merged two small changes to my VLC 1.1 tree, they can be applied to 1.2 tree instead since they&#039;re not _really_ broken. (doesn&#039;t effect much anything)&lt;br /&gt;
&lt;br /&gt;
http://github.com/juhovh/vlc/commit/b6d1d41acea310b84f3661166aacac5c27579eb6&lt;br /&gt;
http://github.com/juhovh/vlc/commit/40926045f54f72d4c1c73a70106066339efab832&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16339</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16339"/>
		<updated>2010-06-16T06:39:34Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
export CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16332</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16332"/>
		<updated>2010-06-15T22:01:02Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that. Basically this means switching weeks 3 and 4 in the plan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
xport CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16331</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16331"/>
		<updated>2010-06-15T22:00:16Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
xport CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16330</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16330"/>
		<updated>2010-06-15T21:59:57Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
xport CC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&amp;lt;br/&amp;gt;&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16329</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16329"/>
		<updated>2010-06-15T21:59:19Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
Committed an initial asf plugin with libasf, noticed that the libasf interfaces are still not quite flexible enough when it comes to the header values required to maintain compatibility with earlier asf demuxer. Since the header handling needs to be redone anyway to support muxing, it&#039;s now the plan to first skip to implementing a header structure that&#039;s easy to parse/serialize and base the new asf plugin on that.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note to self about compiling qt4 on Mac OSX. Make a 32-bit build and:&lt;br /&gt;
&lt;br /&gt;
xport CC=/Developer/usr/bin/llvm-gcc-4.2&lt;br /&gt;
export CXX=/Developer/usr/bin/llvm-g++-4.2&lt;br /&gt;
export OBJC=/Developer/usr/bin/llvm-gcc-4.2&lt;br /&gt;
export QT4_CFLAGS=&amp;quot;-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -F/Library/Frameworks&amp;quot;&lt;br /&gt;
export QT4_LIBS=&amp;quot;-F/Library/Frameworks -L/Library/Frameworks -framework QtGui -framework QtCore&amp;quot;&lt;br /&gt;
mkdir build-qt4; cd build-qt4&lt;br /&gt;
../configure --enable-debug --enable-qt4&lt;br /&gt;
&lt;br /&gt;
There&#039;s many problems with the build, but audio plays ok.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16310</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16310"/>
		<updated>2010-06-13T19:27:08Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Weekly progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No work done because busy with master&#039;s thesis and graduation. Some questions discussed with mentors through email though.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010&amp;diff=16213</id>
		<title>SoC 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010&amp;diff=16213"/>
		<updated>2010-06-03T10:38:45Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Google Summer of Code 2010.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This wiki page covers the attempt by the [[VideoLAN]] project to act as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve {{VLC}}, [[x264]], the H.264 video encoder, and VLMC. The accepted projects are seen on a [http://wiki.videolan.org/SoC_2010_projects separate page].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp; Information ==&lt;br /&gt;
&lt;br /&gt;
This wiki page covers the attempt by the [[VideoLAN]] project to act as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve {{VLC}} and [[x264]], the H.264 video encoder.&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a mentoring organization in [[SoC_2007|2007]], [[SoC_2008|2008]] and [[SoC_2009|2009]].&lt;br /&gt;
&lt;br /&gt;
* This page list the ideas for VLC.&lt;br /&gt;
* There is also a separate page for project ideas for [[x264]]: &#039;&#039;&#039;[[SoC x264 2010]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are a &#039;&#039;&#039;student&#039;&#039;&#039;, please read [[SoC_2010_Rules|the rules and advice]].&lt;br /&gt;
&lt;br /&gt;
=== VLC media player ===&lt;br /&gt;
{{VLC}} is a cross-platform multimedia player, encoder and streamer application.&lt;br /&gt;
It is one of the most successful open-source projects without any professional structure underneath.&lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 5 millions from the main website and that&#039;s not including third-party distributions (Linux)!&lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main_Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
=== x264 ===&lt;br /&gt;
{{x264}} is probably the most popular open source video compression software, used worldwide for applications such as web video, television broadcast, and Blu-ray authoring. It outclasses practically all commercial implementations both speed and compression-wise. While not actually part of VLC or ffmpeg, it is a major library used by both, licensed under the GPL. Due to its popularity in the commercial world (for example, Youtube and Facebook rely on it), many companies have offered bounties in the past for features and improvements that they found useful.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLC will be included in later releases; SoC projects for x264 will be included in the main tree of the project. &lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL licence. (v2+)&lt;br /&gt;
&lt;br /&gt;
=== Ideas for VLC and VLMC ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Read this&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page is split in three lists of ideas:&lt;br /&gt;
&lt;br /&gt;
# The &#039;&#039;main ideas&#039;&#039; are what seem to be &#039;&#039;key projects&#039;&#039; for VLC and should be more &#039;&#039;thrilling&#039;&#039; than the other ones; we have assigned a potential mentor to each of these.&lt;br /&gt;
# Phonon ideas, for KDE/Phonon work.&lt;br /&gt;
# The other ideas are less detailed but could be good ideas too.&lt;br /&gt;
# VLMC ideas&lt;br /&gt;
# [[Mini_Projects]] are short-span projects which can be given as Qualification tasks or extended to be Full Summer of Code project.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Original good ideas will be valued&#039;&#039;&#039;. Last year, half of the ideas were given by students.  We don&#039;t want to impose anything. This is free and Open Source software.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to apply for SoC but want other ideas to develop on, check the [[Mini Projects]] page!&lt;br /&gt;
&lt;br /&gt;
And on the IRC channel, you can have even more ideas.&lt;br /&gt;
&lt;br /&gt;
===Ideas for x264===&lt;br /&gt;
For x264 ideas, please see [[SoC x264 2010]].&lt;br /&gt;
&lt;br /&gt;
== Key VLC projects ==&lt;br /&gt;
&lt;br /&gt;
=== Shader support for DirectX/OpenGL ===&lt;br /&gt;
A lot of video post-processing such as RGB-YUV conversion can be accelerated by using GPU and Shaders. Implement support for this in the DirectX and OpenGL drivers for Windows and OpenGL for other platforms. (coding in C and custom shader creation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Fenrir&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Rewrite Matroska demuxer ===&lt;br /&gt;
This project is for advanced multimedia coders.&lt;br /&gt;
&lt;br /&gt;
If you are well introduced in muxers/demuxers and know pretty well how matroska is done, this is for you.&lt;br /&gt;
&lt;br /&gt;
You will very likely need to use an existing open source demuxer, for example the libavformat demuxer (written in C)&lt;br /&gt;
&lt;br /&gt;
If you are fast enough, the muxer side would be cool.&lt;br /&gt;
&lt;br /&gt;
Code will be in &#039;&#039;C&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Fenrir&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice:&lt;br /&gt;
* to create or implement new algorithms, like SRS WoW or other 3D effects&lt;br /&gt;
* to work on channels mixing,&lt;br /&gt;
* to work on tracks mixing,&lt;br /&gt;
* to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.&lt;br /&gt;
* LADSPA or other libraries integration will be interesting.&lt;br /&gt;
&lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Geal|geal]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== VLC Test Suite ===&lt;br /&gt;
This project aims at making automatic tests to improve VLC quality.&lt;br /&gt;
&lt;br /&gt;
* Write a series of tests for vlc-internal&lt;br /&gt;
* Integrate a framework for automated plugins testing with the automake build system&lt;br /&gt;
* Automate the different codec playback/mux/etc tests&lt;br /&gt;
* Automate the subtitles tests&lt;br /&gt;
* Write tests for the different bindings: Mac OS X Framework/Python Bindings... etc.&lt;br /&gt;
&lt;br /&gt;
This project is a code project, require good knowledge of C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Rémi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== VLC Personnal Cloud Project 2.0 ===&lt;br /&gt;
&lt;br /&gt;
The personal cloud project is a simple project to allow people to play their media files anywhere in the world.&lt;br /&gt;
&lt;br /&gt;
Through the http interface of VLC, a user can:&lt;br /&gt;
* list the medias from the Media Library,&lt;br /&gt;
* play those medias,&lt;br /&gt;
* those medias get transcoded and streamed in:&lt;br /&gt;
** Flash&lt;br /&gt;
** Silverlight&lt;br /&gt;
** iPhone format&lt;br /&gt;
** Android format&lt;br /&gt;
** html5&lt;br /&gt;
** A VLC webplugin&lt;br /&gt;
&lt;br /&gt;
A good example of the aim is http://www.vodobox.c.la/&lt;br /&gt;
&lt;br /&gt;
This project has to work on the configuration and NAT traversal.&lt;br /&gt;
&lt;br /&gt;
This projects needs knowledge in HTML and JS; it might require C coding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: dionoea&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Enhanced DVD Audio support ===&lt;br /&gt;
&lt;br /&gt;
This project is quite simple, it speaks about supporting DVD-Audio.&lt;br /&gt;
&lt;br /&gt;
VLC already decodes .aob files, but doesn&#039;t handle the DVD-Audio extensions, nor the decryption.&lt;br /&gt;
&lt;br /&gt;
The student should be passionate about Audio and have already one DVD-Audio Disc.&lt;br /&gt;
&lt;br /&gt;
This project is a code project, require knowledge of C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Interface for VLC on Mobile phones ===&lt;br /&gt;
&lt;br /&gt;
VLC uses Qt for its main interfaces on desktop systems.&lt;br /&gt;
&lt;br /&gt;
It would be nice to have an UI for embedded systems like Windows Mobile.&lt;br /&gt;
&lt;br /&gt;
Using Qt or EFL would be a good idea.&lt;br /&gt;
&lt;br /&gt;
This project is a code project, require knowledge of C or C++.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ILEoo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Blu-ray enhancements ===&lt;br /&gt;
&lt;br /&gt;
We need Menu/Navigation support.&lt;br /&gt;
VLC Currently supports Bluray chapter playback but still needs menu support.&lt;br /&gt;
&lt;br /&gt;
BD-Live and BD-Java support would be interesting.&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: jb&lt;br /&gt;
 &lt;br /&gt;
=== RTMPdump ===&lt;br /&gt;
&lt;br /&gt;
Integrate the RTMPdump library to play rtmp and rtmpe streams.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: jpsaman or ivoire&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== UPNP DLNA Server and Client ===&lt;br /&gt;
&lt;br /&gt;
Provide SD module for DLNA shares being compliant with DLNA specification as well as software (say, mediatomb, xbmc, etc) and hardware implementations.&lt;br /&gt;
&lt;br /&gt;
Provide DLNA plugin for DLNA server compliant with opensource (xbmc, djmount, etc) and proprietary (PS3, xbox360, etc) DLNA clients.&lt;br /&gt;
&lt;br /&gt;
Be smart enough to provide &amp;quot;presets&amp;quot; for known DLNA media clients with limited features (PS3, for instance) which require additional quirks or hacks or items to be transcoded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: ivoire or Meuuh&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Assembly optimizations in VLC ===&lt;br /&gt;
&lt;br /&gt;
If you are fond of writing ASM and you are fluent in MMX/SSE2/SSE4, there are many interesting things in VLC to speed up.&lt;br /&gt;
* Profiling VLC.&lt;br /&gt;
* memcpy implementations in SSE* and MMX (see modules/misc/memcpy/fastmemcpy.h)&lt;br /&gt;
* video filters ASM speedups (see modules/video_filter/blend.c)&lt;br /&gt;
* audio filters ASM speedups (see modules/audio_filter/equalizer.c)&lt;br /&gt;
* Porting other ASM video filters to VLC.&lt;br /&gt;
&lt;br /&gt;
This project needs some good ASM knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
* Stuff to read: http://www.agner.org/optimize/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Set of lua extensions ===&lt;br /&gt;
&lt;br /&gt;
With VLC 1.1, extensions can be written for VLC in lua.&lt;br /&gt;
&lt;br /&gt;
This project deals with writing many new extensions (between 20 and 30) during the summer for the most interesting features we can find on the Net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:Jpeg|jpeg]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Phonon ideas ==&lt;br /&gt;
&lt;br /&gt;
=== High-Level Capture API for Phonon (read: Webcam Support) ===&lt;br /&gt;
Phonon is a multimedia abstraction layer, developed by the KDE project.&lt;br /&gt;
&lt;br /&gt;
It features multiple backends, including VLC.&lt;br /&gt;
&lt;br /&gt;
The goal of this project would be to create an API to allow Phonon application to display and access input devices, like webcams. The API would then be implemented in phonon-vlc and other backends, such as phonon-gst, as time permits.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Ian Monroe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Phonon-VLC improvements and test ===&lt;br /&gt;
&lt;br /&gt;
This project would be about improving the long-term quality of the Phonon-VLC backend:&lt;br /&gt;
* Improving VLC Phonon backend, implementing lacking API,&lt;br /&gt;
* Fixing the Phonon CTest-based tests,&lt;br /&gt;
* Implement more tests,&lt;br /&gt;
* Run the tests on windows,&lt;br /&gt;
* Implement cool features like DVD-Audio or Blu-Ray support (should be pretty easy),&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed Mentor: Sandsmark (if not a student himself)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Phonon API for low-level PCM I/O ===&lt;br /&gt;
&lt;br /&gt;
This would be about implementing API for low-level PCM I/O in Phonon, and support in one or more backends (at least Phonon-VLC):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Ian Monroe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Phonon API for implementing effects in applications ===&lt;br /&gt;
&lt;br /&gt;
This would be about fleshing out an API for letting applications make their own effects (get data out, and push data back). Might be useful to use AudioDataOutput.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Ian Monroe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLMC (VideoLAN Movie Creator) ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Add Jack support ===&lt;br /&gt;
&lt;br /&gt;
This is an often request features.&lt;br /&gt;
&lt;br /&gt;
It would be nice to be abble to export VLMC sound output to another program, or reading from another program output instead or reading from an audio file.&lt;br /&gt;
&lt;br /&gt;
This project includes core VLMC programming, to allow the selection of an audio input/output, as VLMC only supports file input, and doesn&#039;t really deals with output. Once this is done, it will require some GUI programming, to create some configuration widgets.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Proposed mentor: chouquette&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Adding custom widgets ===&lt;br /&gt;
&lt;br /&gt;
Many widgets are not good enough right now. Correcting those widgets, provide alternative widget so VLMC better fits with the video editing needs.&lt;br /&gt;
&lt;br /&gt;
Many widgets can be rewritten : Import, Library, Clip property... be creative !&lt;br /&gt;
&#039;&#039; Proposed mentor: etix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Youtube integration ===&lt;br /&gt;
&lt;br /&gt;
As VLC can read a Youtube input, so does VLMC. However, this is not implemented at this time.&lt;br /&gt;
This project would consist in : importing media from youtube , allowing direct export to youtube, directly export to youtube, instead of a file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Proposed mentor: chouquette&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Supplementary ideas ==&lt;br /&gt;
&lt;br /&gt;
This sections welcomes all &#039;&#039;&#039;Original&#039;&#039;&#039; ideas which can be implemented in a short span of time.However, We have a more general page for ideas for Project in {{VLC}}, that could give you ideas: [[Mini_Projects]].&lt;br /&gt;
&lt;br /&gt;
=== Add Proxy Support ===&lt;br /&gt;
&lt;br /&gt;
Add a central Proxy Server option for all the HTTP operations performed by vlc.This project will need to add a UI component to VLC and then converting the way VLC interacts with Various Websites like last.fm or imdb.com&lt;br /&gt;
&lt;br /&gt;
=== VLC Taskbar/Toolbar Mode ===&lt;br /&gt;
&lt;br /&gt;
To Develop a Toolbar mode which shows the sound current sound track information,and avails basic control to users eliminating the hassle of swtching between UIs.This mode is already available in many Media players.VLC is lacking this feature currently.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: [[User:J-b|jb]]&#039;&#039;&lt;br /&gt;
Proposed by : pk&lt;br /&gt;
&lt;br /&gt;
=== Spotify integration ===&lt;br /&gt;
&lt;br /&gt;
Develop a way to decode spotify streams.&lt;br /&gt;
&lt;br /&gt;
=== Windows 7 integration ===&lt;br /&gt;
&lt;br /&gt;
Use taskbar and tasklist cool feature.&lt;br /&gt;
&lt;br /&gt;
Integrate with DirectWrite and Direct2D&lt;br /&gt;
&lt;br /&gt;
=== Symbian port ===&lt;br /&gt;
&lt;br /&gt;
Port VLC to S60 platform&lt;br /&gt;
&lt;br /&gt;
=== SVCD/VCD improvements ===&lt;br /&gt;
&lt;br /&gt;
Menus and such  needs to be improvements and fixed.&lt;br /&gt;
&lt;br /&gt;
== Questions? Contact us? ==&lt;br /&gt;
If you need to contact us for any questions, you can:&lt;br /&gt;
* use the [http://www.videolan.org/developers/lists.html vlc-devel] mailing list,&lt;br /&gt;
* come on IRC irc://irc.videolan.org #videolan&lt;br /&gt;
* contact one of the mentors or the backup mentors,&lt;br /&gt;
* or contact [[User:J-b| Jean-Baptiste Kempf]]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
The proposed mentors are:&lt;br /&gt;
* jpeg&lt;br /&gt;
* remi&lt;br /&gt;
* xtophe&lt;br /&gt;
* jb&lt;br /&gt;
* dionoea&lt;br /&gt;
* jpsaman&lt;br /&gt;
* fenrir&lt;br /&gt;
* ivoire&lt;br /&gt;
* funman (backup)&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
* jb&lt;br /&gt;
* xtophe&lt;br /&gt;
&lt;br /&gt;
[[Category:Activities]] [[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Juhovh&amp;diff=16212</id>
		<title>User:Juhovh</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Juhovh&amp;diff=16212"/>
		<updated>2010-06-03T10:37:06Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2010 student&amp;lt;br&amp;gt;&lt;br /&gt;
[http://juho.vähä-herttua.fi/ Personal website]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.videolan.org/SoC_2010_ASF_Demuxer GSoC2010 project page]&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16201</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16201"/>
		<updated>2010-05-31T18:15:20Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Weekly progress ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ASF demuxer codebase is pretty clean and straightforward, except for the patches that add DVR-MS, they are not so clearly described but can be seen easily in commit [http://git.videolan.org/?p=vlc/vlc-1.1.git;a=commitdiff;h=308d7c4354df86074583e4635cde5cfbb705e00c;hp=9cd8ee7b4ee1f29fc1c0d584be813b4130492246 308d7c4354df86074583e4635cde5cfbb705e00c]. There&#039;s things like &amp;quot;64 bytes we don&#039;t know much about&amp;quot; that should be cleared out. The DEMUX_SET_TIME falls back to the SeekPercent which should be improved so that it would seek to video keyframes. Right now seeking in files without index often result in garbage on the screen for a while. There&#039;s comments like &amp;quot;/* FIXME I have to do that for some file, I don&#039;t known why */&amp;quot; where I have some kind of idea why it has to be done for some file, these should be commented and cleared up.&lt;br /&gt;
&lt;br /&gt;
The ASF muxer has very limited capabilities of editing the metadata of generated ASF file. Only the basic metadata set &amp;quot;title, author, copyright, comment, rating&amp;quot; can be modified, plus two additional options &amp;quot;packet-size&amp;quot; and &amp;quot;bitrate-override&amp;quot;. The header serialization is done by writing the headers statically byte by byte. It would make sense to use the ASF header structs already used in the ASF demuxer and serialize those to the output for more flexibility. The muxer also seems to create an index object in the end of the stream, but the index object doesn&#039;t seem to contain any index entries. If the index is really to be used, it should create a proper seeking index at least.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16121</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16121"/>
		<updated>2010-05-23T09:09:28Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Produced code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, will contain experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16120</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16120"/>
		<updated>2010-05-23T09:09:09Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Produced code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, contains experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16119</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16119"/>
		<updated>2010-05-23T09:08:39Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Produced code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 branch in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, contains experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream is in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16118</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16118"/>
		<updated>2010-05-23T09:07:38Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Produced code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
[http://github.com/juhovh/vlc &#039;&#039;&#039;master&#039;&#039;&#039;] - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt;[http://github.com/juhovh/vlc/tree/vlc-1.1 &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039;] - Follows the VLC 1.1 branch in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; [http://github.com/juhovh/vlc/tree/libasf &#039;&#039;&#039;libasf&#039;&#039;&#039;] - Branched from VLC 1.1 for now because it&#039;s more stable, contains experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16117</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16117"/>
		<updated>2010-05-23T09:06:01Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Produced code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Produced code  ==&lt;br /&gt;
&lt;br /&gt;
For convenience everything is hosted in my personal [http://github.com/juhovh/vlc github repository]. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;master&#039;&#039;&#039; - Follows the VLC master in [http://git.videolan.org/?p=vlc.git git://git.videolan.org/vlc.git] plus patches&amp;lt;br&amp;gt; &#039;&#039;&#039;vlc-1.1&#039;&#039;&#039; - Follows the VLC 1.1 branch in [http://git.videolan.org/?p=vlc/vlc-1.1.git git://git.videolan.org/vlc/vlc-1.1.git] plus patches&amp;lt;br&amp;gt; &#039;&#039;&#039;libasf&#039;&#039;&#039; - Branched from VLC 1.1 for now because it&#039;s more stable, contains experimental ASF code &lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16116</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16116"/>
		<updated>2010-05-23T09:03:19Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Produced code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Produced code==&lt;br /&gt;
For convenience everything is hosted in [http://github.com/juhovh/vlc github] repository. There are at least three branches available, plus possibly some extra branches depending on the need. The meaning of the branches is as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;master&#039;&#039;&#039; - Follows the VLC master in [git://git.videolan.org/vlc.git] plus patches&lt;br /&gt;
&#039;&#039;&#039;vlc-1.1&#039;&#039;&#039; - Follows the VLC 1.1 branch in [git://git.videolan.org/vlc/vlc-1.1.git] plus patches&lt;br /&gt;
&#039;&#039;&#039;libasf&#039;&#039;&#039; - Branched from VLC 1.1 for now because it&#039;s more stable, contains experimental ASF code&lt;br /&gt;
&lt;br /&gt;
The new code will first enter the &#039;&#039;libasf&#039;&#039; branch and when it&#039;s stable enough I will port it for the 1.2 version and push to &#039;&#039;master&#039;&#039;. The main idea is to have only that kind of code that can be merged to upstream in &#039;&#039;master&#039;&#039; and &#039;&#039;vlc-1.1&#039;&#039; branches. The &#039;&#039;vlc-1.1&#039;&#039; branch is mainly for patching possible small issues that come up in VLC 1.1 or backporting changes from &#039;&#039;master&#039;&#039; when appropriate.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16115</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16115"/>
		<updated>2010-05-23T08:56:18Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vähä-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Produced code==&lt;br /&gt;
For convenience everything is hosted in [http://github.com/juhovh/vlc github] repository. The master branch will mostly follow upstream, my plan is to only commit more finished code there. Everything that breaks compilation etc. will go to private branches that are related to that specific task.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16114</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16114"/>
		<updated>2010-05-23T08:55:59Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. I&#039;ve been a student since 2003 and plan to graduate during summer 2010. Partly because of all this I might have some other things to take care of until the end of June. The plan is to work full time on this project from July to August however. I have a [http://juho.vaha-herttua.fi/ personal website] that I made some years ago, it has most of the useful information about myself.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Produced code==&lt;br /&gt;
For convenience everything is hosted in [http://github.com/juhovh/vlc github] repository. The master branch will mostly follow upstream, my plan is to only commit more finished code there. Everything that breaks compilation etc. will go to private branches that are related to that specific task.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16113</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16113"/>
		<updated>2010-05-23T08:53:55Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve both the ASF demuxer and muxer as much as I can and then find another similar project to work on the rest of the time. It&#039;s worth to note that the timeline on this website is just a suggestion, and it&#039;s no problem to work on small independent patches during the time as well. I like to do things well on the first try, that&#039;s why the schedule is not made too tight.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. Will know for sure around beginning of June.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Produced code==&lt;br /&gt;
For convenience everything is hosted in [http://github.com/juhovh/vlc github] repository. The master branch will mostly follow upstream, my plan is to only commit more finished code there. Everything that breaks compilation etc. will go to private branches that are related to that specific task.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16112</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16112"/>
		<updated>2010-05-23T08:50:23Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve the ASF demuxer as much as I can and then find another similar project to work on the rest of the time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. Will know for sure around beginning of June.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date !! Period !! Description&lt;br /&gt;
|-&lt;br /&gt;
| April 26 - May 24 || Community bonding || Getting more familiar with the VLC code base, some small fixes.&lt;br /&gt;
|-&lt;br /&gt;
| May 24 - May 30 || Week 1 || Review all the existing code, map out needed features.&lt;br /&gt;
|-&lt;br /&gt;
| May 31 - June 6 || Week 2 || Start cleaning up the demuxer code, go through existing related bugs.&lt;br /&gt;
|-&lt;br /&gt;
| June 7 - June 13 || Week 3 || Write a working VLC demuxer plugin with a clear API.&lt;br /&gt;
|-&lt;br /&gt;
| June 14 - June 20 || Week 4 || Work on an API to combine the demuxing and muxing code together.&lt;br /&gt;
|-&lt;br /&gt;
| June 21 - June 27 || Week 5 || Finish and review the muxing code, write some test cases.&lt;br /&gt;
|-&lt;br /&gt;
| June 28 - July 4 || Week 6 || Write a working VLC muxer plugin using the rewritten muxer.&lt;br /&gt;
|-&lt;br /&gt;
| July 5 - July 11 || Week 7 || Extra cleaning up period, because there&#039;s always something that slips the deadline.&lt;br /&gt;
|-&lt;br /&gt;
| July 12 - July 18 || Week 8 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 19 - July 25 || Week 9 || (small extra project, to be discussed with mentors)&lt;br /&gt;
|-&lt;br /&gt;
| July 26 - August 1 || Week 10 || Start finishing up (write test suites, run code with valgrind).&lt;br /&gt;
|-&lt;br /&gt;
| August 2 - August 8 || Week 11 || Continue finishing up.&lt;br /&gt;
|-&lt;br /&gt;
| August 9 - August 15 || Week 12 || Finish up and do any final testing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Produced code==&lt;br /&gt;
For convenience everything is hosted in [http://github.com/juhovh/vlc github] repository. The master branch will mostly follow upstream, my plan is to only commit more finished code there. Everything that breaks compilation etc. will go to private branches that are related to that specific task.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16111</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16111"/>
		<updated>2010-05-23T08:40:17Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* ASF and other demuxer support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve the ASF demuxer as much as I can and then find another similar project to work on the rest of the time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. Will know for sure around beginning of June.&lt;br /&gt;
&lt;br /&gt;
==Timeline==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Produced code==&lt;br /&gt;
For convenience everything is hosted in [http://github.com/juhovh/vlc github] repository. The master branch will mostly follow upstream, my plan is to only commit more finished code there. Everything that breaks compilation etc. will go to private branches that are related to that specific task.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16105</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16105"/>
		<updated>2010-05-21T08:10:41Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve the ASF demuxer as much as I can and then find another similar project to work on the rest of the time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. Will know for sure around beginning of June.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Produced code==&lt;br /&gt;
For convenience everything is hosted in [http://github.com/juhovh/vlc github] repository. The master branch will mostly follow upstream, my plan is to only commit more finished code there. Everything that breaks compilation etc. will go to private branches that are related to that specific task.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Juhovh&amp;diff=16018</id>
		<title>User:Juhovh</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Juhovh&amp;diff=16018"/>
		<updated>2010-05-05T20:41:01Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: Created page with &amp;#039;Google Summer of Code 2010 student&amp;lt;br&amp;gt; [http://juho.vähä-herttua.fi/ Personal website]&amp;lt;br&amp;gt; [http://wiki.videolan.org/SoC_2010_Shader_Support GSoC2010 project page]&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code 2010 student&amp;lt;br&amp;gt;&lt;br /&gt;
[http://juho.vähä-herttua.fi/ Personal website]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.videolan.org/SoC_2010_Shader_Support GSoC2010 project page]&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_projects&amp;diff=16017</id>
		<title>SoC 2010 projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_projects&amp;diff=16017"/>
		<updated>2010-05-05T20:39:04Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: /* Shader support for video post-processing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of the accepted projects for Google Summer of Code 2O10.&lt;br /&gt;
&lt;br /&gt;
= List of current VLC projects =&lt;br /&gt;
==Shader support for video post-processing==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2010 Shader Support]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Skoruga|Sasha Koruga]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Adrien Maglo&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
A lot of video post-processing such as RGB-YUV conversion can be accelerated by using the GPU. This can either be achieved through a fragment shader, where it is the last step before a pixel is displayed on the screen, or it can be done with DirectCompute/CUDA/OpenCL. The method will vary depending on the task and intent. I will implement support for shaders by using the DirectX and OpenGL API and write a few shaders such as RGB-YUV conversion.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2010 ASF Demuxer]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:juhovh|Juho Vähä-Herttua]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Ilkka Ollakka&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve the ASF demuxer as much as I can and then find another similar project to work on the rest of the time.&lt;br /&gt;
&lt;br /&gt;
= List of current x264 projects =&lt;br /&gt;
&lt;br /&gt;
= List of current VLMC projects =&lt;br /&gt;
==Enhancing VLMC==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page: [[SoC 2010/Youtube Integration VLMC|SoC 2010/Youtube Integration in VLMC]]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Rohityadav|Rohit Yadav]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Ludovic &#039;etix&#039; Fauvet&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Youtube is the most popular video sharing website, right now. VLMC is a video editing software and having features in VLMC to search-retrieve videos, directly upload/update/delete videos on Youtube, within the application itself, would be awesome. The aim of this project is to write a small C++/Qt based Youtube client library for VLMC that provides her all the APIs to perform all those things.&lt;br /&gt;
&lt;br /&gt;
= List of current Phonon projects =&lt;br /&gt;
== PCM I/O API ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Project page&#039;&#039;&#039;: [[SoC 2010/PCM IO API (Phonon)]]&lt;br /&gt;
* &#039;&#039;&#039;Student&#039;&#039;&#039;: [[User:Mforney|Michael Forney]]&lt;br /&gt;
* &#039;&#039;&#039;Mentor&#039;&#039;&#039;: Jean-Baptiste Kempf&lt;br /&gt;
* &#039;&#039;&#039;Abstract&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Design a fully featured PCM I/O API for Phonon, and provide an implementation for the Phonon-VLC backend and one other (either MPlayer or Xine). This API will allow developers to capture PCM data from devices like a sound card, or to play back raw audio from memory, or elsewhere. This will provide some important missing features in Phonon, and open the door for many applications waiting to make use of an API like this.&lt;br /&gt;
&lt;br /&gt;
[[Category:SoC_2010_Project]][[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16016</id>
		<title>SoC 2010 ASF Demuxer</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2010_ASF_Demuxer&amp;diff=16016"/>
		<updated>2010-05-05T20:36:38Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: Created page with &amp;#039;{{SoCProject|year=2010|student=Juho Vähä-Herttua|mentor=Ilkka Ollakka}}  =ASF and other demuxer support=  ==Abstract== I was selected to do a project relate…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoCProject|year=2010|student=[[User:juhovh|Juho Vähä-Herttua]]|mentor=[[Ilkka Ollakka]]}}&lt;br /&gt;
&lt;br /&gt;
=ASF and other demuxer support=&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
I was selected to do a project related to ASF and Matroska demuxers, but since there&#039;s some overlap related to Matroska, my main goal now is to improve the ASF demuxer as much as I can and then find another similar project to work on the rest of the time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
I&#039;m a student at Aalto University School of Science and Technology and I hope this is my final year here. Will know for sure around beginning of June.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_GPU_Decoding&amp;diff=15972</id>
		<title>VLC GPU Decoding</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VLC_GPU_Decoding&amp;diff=15972"/>
		<updated>2010-04-25T21:51:04Z</updated>

		<summary type="html">&lt;p&gt;Juhovh: Add a link to the new API&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction to GPU decoding in VLC  =&lt;br /&gt;
&lt;br /&gt;
The {{VLC}} framework can use your &#039;&#039;&#039;&#039;&#039;graphic card&#039;&#039;&#039;&#039;&#039; (aka GPU) to decode H.264 streams (wrongly called HD&amp;amp;nbsp;videos) under certain circumstances. &lt;br /&gt;
&lt;br /&gt;
VLC, in its &#039;&#039;&#039;modular&#039;&#039;&#039; approach and its transcoding/streaming capabilities, does decoding in GPU at the &#039;&#039;&#039;decoding stage only&#039;&#039;&#039; and then gets the data back to go to the other stages (streaming, filtering or plug any video output after that). &lt;br /&gt;
&lt;br /&gt;
What that means is that, compared to some other implementation, GPU decoding in VLC can be slower because it needs to get the &#039;&#039;data back from the GPU&#039;&#039;. But you can plug &#039;&#039;&#039;ANY&#039;&#039;&#039; video output (sink) to it and use &#039;&#039;&#039;all &#039;&#039;&#039;the VLC video filters. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Windows  ===&lt;br /&gt;
VLC 1.1 supports [http://en.wikipedia.org/wiki/DirectX_Video_Acceleration DxVA] in its version &#039;&#039;&#039;2.0&#039;&#039;&#039;. That means that &#039;&#039;Windows Vista&#039;&#039;, &#039;&#039;Windows 2008&#039;&#039; or &#039;&#039;Windows 7&#039;&#039; are &#039;&#039;&#039;required&#039;&#039;&#039;. If you are using &#039;&#039;Windows XP&#039;&#039;, VLC cannot work for you yet. &lt;br /&gt;
&lt;br /&gt;
=== Linux  ===&lt;br /&gt;
&lt;br /&gt;
On Linux, there is code for VDPAU and VAAPI. There is also some code for a VAAPI video output, that isn&#039;t merged in the current Git. &lt;br /&gt;
&lt;br /&gt;
Read [[VLC_VAAPI]] and [thresh&#039;s blog|http://strangestone.livejournal.com/107092.html] for more details.&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X  ===&lt;br /&gt;
Mac OS X (X.6.3) provides a [http://developer.apple.com/mac/library/technotes/tn2010/tn2267.html new API] for decoding in GPU. This isn&#039;t working yet with VLC. Help is welcome.&lt;br /&gt;
&lt;br /&gt;
= Requirements for Windows DxVA2 in VLC =&lt;br /&gt;
&lt;br /&gt;
To check your DxVA compatibility, please &#039;&#039;&#039;download [http://bluesky23.hp.infoseek.co.jp/en/index.html#DXVAChecker DxVA Checker]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Graphic card  ==&lt;br /&gt;
VLC developers recommend to use nVidia cards so far to have the best performance.&lt;br /&gt;
&lt;br /&gt;
=== nVidia  ===&lt;br /&gt;
&lt;br /&gt;
For nVidia GPU, you are required to use a GPU supporting [http://en.wikipedia.org/wiki/Nvidia_PureVideo PureVideo] in its 2nd generation (VP2 or newer), which means that you need a [http://en.wikipedia.org/wiki/GeForce_8_Series GeForce 8], [http://en.wikipedia.org/wiki/GeForce_9_Series GeForce 9] (advised), [http://en.wikipedia.org/wiki/GeForce_200_Series GeForce 200] or newer.&lt;br /&gt;
&lt;br /&gt;
To be sure, check your GPU against this table on [http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs wikipedia] and check if you are VP2 or newer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ATI ===&lt;br /&gt;
&lt;br /&gt;
For ATI GPUs, it is a bit trickier.&lt;br /&gt;
&lt;br /&gt;
First, you are required to use a GPU supporting [http://en.wikipedia.org/wiki/Unified_Video_Decoder Unified Video Decoder].&lt;br /&gt;
&lt;br /&gt;
We believe you need a [http://en.wikipedia.org/wiki/Unified_Video_Decoder#UVD_enabled_GPUs GPU supporting UVD+], but you might require a UVD2 compatible GPU. We don&#039;t have the hardware to test so far. We have tested against &#039;&#039;Radeon 4K&#039;&#039; so far.&lt;br /&gt;
&lt;br /&gt;
Then, ATI cards seems to be very slow to get the data back from the GPU. So far, it seems that you need a SSE4.1 compatible CPU to decode, in order to use MOVNTDQA instruction. This may change in the future!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
&lt;br /&gt;
We haven&#039;t tested any Intel implementation so far.&lt;/div&gt;</summary>
		<author><name>Juhovh</name></author>
	</entry>
</feed>