diff --git a/.clang-format b/.clang-format
index 3054389..7ce4e92 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,7 +1,7 @@
 ---
 Language:        Cpp
 # BasedOnStyle:  Google
-# Generated with clang-format 4.0.1
+# Generated with clang-format 7.0.1
 AccessModifierOffset: -1
 AlignAfterOpenBracket: Align
 AlignConsecutiveAssignments: false
@@ -30,17 +30,26 @@
   AfterObjCDeclaration: false
   AfterStruct:     false
   AfterUnion:      false
+  AfterExternBlock: false
   BeforeCatch:     false
   BeforeElse:      false
   IndentBraces:    false
+  SplitEmptyFunction: true
+  SplitEmptyRecord: true
+  SplitEmptyNamespace: true
 BreakBeforeBinaryOperators: None
 BreakBeforeBraces: Attach
 BreakBeforeTernaryOperators: false
+BreakBeforeInheritanceComma: false
+BreakInheritanceList: BeforeColon
+BreakBeforeTernaryOperators: true
 BreakConstructorInitializersBeforeComma: false
+BreakConstructorInitializers: BeforeColon
 BreakAfterJavaFieldAnnotations: false
 BreakStringLiterals: true
 ColumnLimit:     80
 CommentPragmas:  '^ IWYU pragma:'
+CompactNamespaces: false
 ConstructorInitializerAllOnOneLineOrOnePerLine: true
 ConstructorInitializerIndentWidth: 4
 ContinuationIndentWidth: 4
@@ -50,14 +59,24 @@
 ExperimentalAutoDetectBinPacking: false
 ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
 IncludeCategories:
-  - Regex:           '^<.*\.h>'
-    Priority:        1
-  - Regex:           '^<.*'
-    Priority:        2
-  - Regex:           '.*'
-    Priority:        3
+FixNamespaceComments: true
+ForEachMacros:
+  - foreach
+  - Q_FOREACH
+  - BOOST_FOREACH
+IncludeBlocks:   Preserve
+IncludeCategories:
+   - Regex:           '^<ext/.*\.h>'
+     Priority:        2
+   - Regex:           '^<.*\.h>'
+     Priority:        1
+   - Regex:           '^<.*'
+     Priority:        2
+   - Regex:           '.*'
+     Priority:        3
 IncludeIsMainRegex: '([-_](test|unittest))?$'
 IndentCaseLabels: true
+IndentPPDirectives: None
 IndentWidth:     2
 IndentWrappedFunctionNames: false
 JavaScriptQuotes: Leave
@@ -67,22 +86,59 @@
 MacroBlockEnd:   ''
 MaxEmptyLinesToKeep: 1
 NamespaceIndentation: None
+ObjCBinPackProtocolList: Never
 ObjCBlockIndentWidth: 2
 ObjCSpaceAfterProperty: false
 ObjCSpaceBeforeProtocolList: false
+ObjCSpaceBeforeProtocolList: true
+PenaltyBreakAssignment: 2
 PenaltyBreakBeforeFirstCallParameter: 1
 PenaltyBreakComment: 300
 PenaltyBreakFirstLessLess: 120
 PenaltyBreakString: 1000
+PenaltyBreakTemplateDeclaration: 10
 PenaltyExcessCharacter: 1000000
 PenaltyReturnTypeOnItsOwnLine: 200
 PointerAlignment: Left
+RawStringFormats:
+  - Language:        Cpp
+    Delimiters:
+      - cc
+      - CC
+      - cpp
+      - Cpp
+      - CPP
+      - 'c++'
+      - 'C++'
+    CanonicalDelimiter: ''
+    BasedOnStyle:    google
+  - Language:        TextProto
+    Delimiters:
+      - pb
+      - PB
+      - proto
+      - PROTO
+    EnclosingFunctions:
+      - EqualsProto
+      - EquivToProto
+      - PARSE_PARTIAL_TEXT_PROTO
+      - PARSE_TEST_PROTO
+      - PARSE_TEXT_PROTO
+      - ParseTextOrDie
+      - ParseTextProtoOrDie
+    CanonicalDelimiter: ''
+    BasedOnStyle:    google
 ReflowComments:  true
 SortIncludes:    true
+SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
 SpaceAfterTemplateKeyword: true
 SpaceBeforeAssignmentOperators: true
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
 SpaceBeforeParens: ControlStatements
+SpaceBeforeRangeBasedForLoopColon: true
 SpaceInEmptyParentheses: false
 SpacesBeforeTrailingComments: 2
 SpacesInAngles:  false
@@ -94,4 +150,3 @@
 TabWidth:        8
 UseTab:          Never
 ...
-
diff --git a/common/file_util.cc b/common/file_util.cc
index e6109d5..6eb6428 100644
--- a/common/file_util.cc
+++ b/common/file_util.cc
@@ -24,8 +24,8 @@
 std::string GetTempFileName() {
 #if !defined _MSC_VER && !defined __MINGW32__
   std::string temp_file_name_template_str =
-      std::string(std::getenv("TEST_TMPDIR") ? std::getenv("TEST_TMPDIR") :
-                                               ".") +
+      std::string(std::getenv("TEST_TMPDIR") ? std::getenv("TEST_TMPDIR")
+                                             : ".") +
       "/libwebm_temp.XXXXXX";
   char* temp_file_name_template =
       new char[temp_file_name_template_str.length() + 1];
diff --git a/mkvmuxer/mkvmuxerutil.cc b/mkvmuxer/mkvmuxerutil.cc
index 3bff7cd..7636a9f 100644
--- a/mkvmuxer/mkvmuxerutil.cc
+++ b/mkvmuxer/mkvmuxerutil.cc
@@ -562,10 +562,10 @@
   if (relative_timecode < 0 || relative_timecode > kMaxBlockTimecode)
     return 0;
 
-  return frame->CanBeSimpleBlock() ?
-             WriteSimpleBlock(writer, frame, relative_timecode) :
-             WriteBlock(writer, frame, relative_timecode,
-                        cluster->timecode_scale());
+  return frame->CanBeSimpleBlock()
+             ? WriteSimpleBlock(writer, frame, relative_timecode)
+             : WriteBlock(writer, frame, relative_timecode,
+                          cluster->timecode_scale());
 }
 
 uint64 WriteVoidElement(IMkvWriter* writer, uint64 size) {
diff --git a/mkvmuxer_sample.cc b/mkvmuxer_sample.cc
index 581ff20..9ef5569 100644
--- a/mkvmuxer_sample.cc
+++ b/mkvmuxer_sample.cc
@@ -735,8 +735,8 @@
           mkvmuxer::Frame muxer_frame;
           if (!muxer_frame.Init(data, frame.len))
             return EXIT_FAILURE;
-          muxer_frame.set_track_number(track_type == Track::kAudio ? aud_track :
-                                                                     vid_track);
+          muxer_frame.set_track_number(track_type == Track::kAudio ? aud_track
+                                                                   : vid_track);
           if (block->GetDiscardPadding())
             muxer_frame.set_discard_padding(block->GetDiscardPadding());
           muxer_frame.set_timestamp(time_ns);
diff --git a/webm_parser/demo/demo.cc b/webm_parser/demo/demo.cc
index 554d5cb..47ecbb0 100644
--- a/webm_parser/demo/demo.cc
+++ b/webm_parser/demo/demo.cc
@@ -1141,8 +1141,8 @@
     return EXIT_FAILURE;
   }
 
-  FILE* file = (argc == 2) ? std::fopen(argv[1], "rb") :
-                             std::freopen(nullptr, "rb", stdin);
+  FILE* file = (argc == 2) ? std::fopen(argv[1], "rb")
+                           : std::freopen(nullptr, "rb", stdin);
   if (!file) {
     std::cerr << "File cannot be opened\n";
     return EXIT_FAILURE;
diff --git a/webm_parser/fuzzing/webm_fuzzer.cc b/webm_parser/fuzzing/webm_fuzzer.cc
index 501b151..bfc4f62 100644
--- a/webm_parser/fuzzing/webm_fuzzer.cc
+++ b/webm_parser/fuzzing/webm_fuzzer.cc
@@ -63,8 +63,8 @@
 
 #if __AFL_COMPILER
 int main(int argc, char* argv[]) {
-  FILE* file = (argc == 2) ? std::fopen(argv[1], "rb") :
-                             std::freopen(nullptr, "rb", stdin);
+  FILE* file = (argc == 2) ? std::fopen(argv[1], "rb")
+                           : std::freopen(nullptr, "rb", stdin);
   if (!file) {
     std::cerr << "File cannot be opened\n";
     return EXIT_FAILURE;
diff --git a/webm_parser/tests/block_parser_test.cc b/webm_parser/tests/block_parser_test.cc
index 3128117..5e414e4 100644
--- a/webm_parser/tests/block_parser_test.cc
+++ b/webm_parser/tests/block_parser_test.cc
@@ -569,8 +569,8 @@
       // is blocked).
       const int this_frame_size = static_cast<int>(frame_size);
       EXPECT_CALL(callback_, OnFrame(metadata, NotNull(), NotNull()))
-          .Times(incremental ? Between(this_frame_size, this_frame_size + 1) :
-                               Exactly(1))
+          .Times(incremental ? Between(this_frame_size, this_frame_size + 1)
+                             : Exactly(1))
           .WillRepeatedly(Invoke(frame_handler));
 
       metadata.position += metadata.size;
