|
@@ -115,7 +115,7 @@ Objective-C where required for interacting with macOS-specific interfaces.
|
|
|
|
|
|
@section Code formatting conventions
|
|
|
|
|
|
-There are the following guidelines regarding the indentation in files:
|
|
|
+There are the following guidelines regarding the code style in files:
|
|
|
|
|
|
@itemize @bullet
|
|
|
@item
|
|
@@ -135,6 +135,105 @@ K&R coding style is used.
|
|
|
@end itemize
|
|
|
The presentation is one inspired by 'indent -i4 -kr -nut'.
|
|
|
|
|
|
+@subsection Examples
|
|
|
+Some notable examples to illustrate common code style in FFmpeg:
|
|
|
+
|
|
|
+@itemize @bullet
|
|
|
+
|
|
|
+@item
|
|
|
+Space around assignments and after
|
|
|
+@code{if}/@code{do}/@code{while}/@code{for} keywords:
|
|
|
+
|
|
|
+@example c, good
|
|
|
+// Good
|
|
|
+if (condition)
|
|
|
+ av_foo();
|
|
|
+@end example
|
|
|
+
|
|
|
+@example c, good
|
|
|
+// Good
|
|
|
+for (size_t i = 0; i < len; i++)
|
|
|
+ av_bar(i);
|
|
|
+@end example
|
|
|
+
|
|
|
+@example c, good
|
|
|
+// Good
|
|
|
+size_t size = 0;
|
|
|
+@end example
|
|
|
+
|
|
|
+However no spaces between the parentheses and condition, unless it helps
|
|
|
+readability of complex conditions, so the following should not be done:
|
|
|
+
|
|
|
+@example c, bad
|
|
|
+// Bad style
|
|
|
+if ( condition )
|
|
|
+ av_foo();
|
|
|
+@end example
|
|
|
+
|
|
|
+@item
|
|
|
+No unnecessary parentheses, unless it helps readability:
|
|
|
+
|
|
|
+@example c, good
|
|
|
+// Good
|
|
|
+int fields = ilace ? 2 : 1;
|
|
|
+@end example
|
|
|
+
|
|
|
+@item
|
|
|
+No braces around single-line blocks:
|
|
|
+
|
|
|
+@example c, good
|
|
|
+// Good
|
|
|
+if (bits_pixel == 24)
|
|
|
+ avctx->pix_fmt = AV_PIX_FMT_BGR24;
|
|
|
+else if (bits_pixel == 8)
|
|
|
+ avctx->pix_fmt = AV_PIX_FMT_GRAY8;
|
|
|
+else @{
|
|
|
+ av_log(avctx, AV_LOG_ERROR, "Invalid pixel format.\n");
|
|
|
+ return AVERROR_INVALIDDATA;
|
|
|
+@}
|
|
|
+@end example
|
|
|
+
|
|
|
+@item
|
|
|
+Avoid assignments in conditions where it makes sense:
|
|
|
+
|
|
|
+@example c, good
|
|
|
+// Good
|
|
|
+video_enc->chroma_intra_matrix = av_mallocz(sizeof(*video_enc->chroma_intra_matrix) * 64)
|
|
|
+if (!video_enc->chroma_intra_matrix)
|
|
|
+ return AVERROR(ENOMEM);
|
|
|
+@end example
|
|
|
+
|
|
|
+@example c, bad
|
|
|
+// Bad style
|
|
|
+if (!(video_enc->chroma_intra_matrix = av_mallocz(sizeof(*video_enc->chroma_intra_matrix) * 64)))
|
|
|
+ return AVERROR(ENOMEM);
|
|
|
+@end example
|
|
|
+
|
|
|
+@example c, good
|
|
|
+// Ok
|
|
|
+while ((entry = av_dict_iterate(options, entry)))
|
|
|
+ av_log(ctx, AV_LOG_INFO, "Item '%s': '%s'\n", entry->key, entry->value);
|
|
|
+@end example
|
|
|
+
|
|
|
+@item
|
|
|
+When declaring a pointer variable, the @code{*} goes with the variable not the type:
|
|
|
+
|
|
|
+@example c, good
|
|
|
+// Good
|
|
|
+AVStream *stream;
|
|
|
+@end example
|
|
|
+
|
|
|
+@example c, bad
|
|
|
+// Bad style
|
|
|
+AVStream* stream;
|
|
|
+@end example
|
|
|
+
|
|
|
+@end itemize
|
|
|
+
|
|
|
+If you work on a file that does not follow these guidelines consistently,
|
|
|
+change the parts that you are editing to follow these guidelines but do
|
|
|
+not make unrelated changes in the file to make it conform to these.
|
|
|
+
|
|
|
@subsection Vim configuration
|
|
|
In order to configure Vim to follow FFmpeg formatting conventions, paste
|
|
|
the following snippet into your @file{.vimrc}:
|