Das Suffix "Vorlage" weist darauf hin, dass der Code von einigen Präprozessordirektiven abhängt.
überprüfte ich die source und am Anfang ist es
#if CHROMA_IDC == 1
# define MCFUNC(n) FUNC(n ## _420)
#elif CHROMA_IDC == 2
# define MCFUNC(n) FUNC(n ## _422)
#elif CHROMA_IDC == 3
# define MCFUNC(n) FUNC(n ## _444)
#endif
beachten Sie, dass Sie #define CHROMA_IDC 3
vor einschließlich dieser Datei haben.
Dies weist den Präprozessor an, define MCFUNC(n) FUNC(n ## _444)
in der enthaltenen Datei zu verwenden.
die Quelle könnte haben in der Make-Datei allein gelassen worden, aber mit einer -DCHROMA_IDC=3
Richtlinie, und in diesem Fall kann die Vorlage nicht wegen mehrere Neudefinition für andere Quelldateien wiederverwendet wird (die Funktionen in dieser Quelldatei sind static
zu Vermeiden Sie mehrfache Neudefinitionen, wenn die Vorlage mehr als einmal installiert ist)
Warum eine Vorlage verwenden? wahrscheinlich für Leistungsprobleme, um eine Aufrufkette zu vermeiden und einige Tests, um das erforderliche Verhalten zu verzweigen. ffmpeg
kann es sich nicht leisten, bei den Kodierungsfunktionen langsam zu sein.
Also ist die Frage, warum eine C-Datei enthalten ist? Die Frage ist für mich etwas schwer zu verstehen, fürchte ich. – unwind
'h264_mc_template.c' muss von' CHROMA_IDC' abhängen, daher muss der korrekte Code mit einbezogen werden. –
Heißt du, warum eine Quelldatei enthalten ist? –