<p>I am in the middle of a massive clean up of the codebase, currently boiling down to removing usage of reserved identifiers (in order to make the code compliant with the C (WG15) and C++ (WG21) Standard).</p>
<h1 id="partially-disabling-of-header-content-why">Partially disabling of header-content, why?</h1>
<p>During my quest I stumbled upon the below in <code>modules/codec/mft.c</code>:</p>
<pre><code>46: #define _VIDEOINFOHEADER_
47: #include <vlc_codecs.h></code></pre>
<p>Inside <code>include/vlc_codecs.h</code> we find the following:</p>
<pre><code>155: #ifndef _VIDEOINFOHEADER_
156: #define _VIDEOINFOHEADER_
157: typedef struct
158: ATTR_PACKED
159: {
160:     RECT32                  rcSource;
161:     RECT32                  rcTarget;
162:     uint32_t                dwBitRate;
163:     uint32_t                dwBitErrorRate;
164:     REFERENCE_TIME          AvgTimePerFrame;
165:     VLC_BITMAPINFOHEADER    bmiHeader;
166: } VIDEOINFOHEADER;
167: #endif</code></pre>
<p>It seems like the author (Felix Abecassis <a href="mailto:felix.abecassis@gmail.com">felix.abecassis@gmail.com</a> according to <code>git blame -e modules/codec/mft.c</code>) wanted to ignore the <code>typedef</code> of <code>VIDEOINFOHEADER</code>. I have tried digging around but I have yet to find a single reason for disabling that part of the header.</p>
<h2 id="questions">Questions</h2>
<ul>
<li><p>Can the following patch be applied without causing issues?</p>
<pre><code>--- a/modules/codec/mft.c
+++ b/modules/codec/mft.c
@@ -43,7 +43,6 @@
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
 #include "../packetizer/h264_nal.h"
-#define _VIDEOINFOHEADER_
 #include <vlc_codecs.h>

 #include <mfapi.h></code></pre></li>
</ul>
<hr />
<h1 id="protected-regions-within-includevlc_codecs.h">"Protected" regions within <code>include/vlc_codecs.h</code></h1>
<p>I also noticed that <code>include/vlc_codecs.h</code> have a lot of other parts that follow the same style as previously mentioned, such as:</p>
<pre><code>169: #ifndef _RGBQUAD_
170: #define _RGBQUAD_
171: typedef struct
172: ATTR_PACKED
173: {
174:     uint8_t rgbBlue;
175:     uint8_t rgbGreen;
176:     uint8_t rgbRed;
177:     uint8_t rgbReserved;
178: } RGBQUAD1;
179: #endif</code></pre>
<p>At first I thought cases such as the above was a leftover from when someone merged several headers into one, but when looking at the commit log this does not seem to be the case.</p>
<p>According to the commit log, the code was introduced to <code>include/codecs.h</code> (Jan 2005), and later that file was renamed to <code>include/vlc_codecs.h</code> (Nov 2006).</p>
<p>The above is based on the below:</p>
<pre><code>% git log -S "_RGBQUAD_"
% git diff d3fe7f28797d4dba65ffcdd60bf932e758a48a9e\^ d3fe7f28797d4dba65ffcdd60bf932e758a48a9e
% git diff c330b1e1ef13296994fd0e004d4af5286367319e\^ c330b1e1ef13296994fd0e004d4af5286367319e</code></pre>
<h2 id="questions-1">Questions</h2>
<ul>
<li>Are the weird "include-guards" in <code>include/vlc_codecs.h</code> documented behavior, or can they safely be removed (or atleast renamed to make the identifiers legal)?</li>
</ul>