Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Unified Diff: media/filters/h264_parser.cc

Issue 119153002: Move H264Parser and H264BitReader to media/filters. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/h264_parser.h ('k') | media/filters/h264_parser_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/h264_parser.cc
diff --git a/content/common/gpu/media/h264_parser.cc b/media/filters/h264_parser.cc
similarity index 82%
rename from content/common/gpu/media/h264_parser.cc
rename to media/filters/h264_parser.cc
index 177668bee67958bfa5f42afd44fa68ceb300c937..d8ead7b2ff6fc2ad339b3e7d85051fcca337f734 100644
--- a/content/common/gpu/media/h264_parser.cc
+++ b/media/filters/h264_parser.cc
@@ -2,13 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/common/gpu/media/h264_parser.h"
-
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/stl_util.h"
-namespace content {
+#include "media/filters/h264_parser.h"
+
+namespace media {
bool H264SliceHeader::IsPSlice() const {
return (slice_type % 5 == kPSlice);
@@ -50,59 +50,61 @@ H264SEIMessage::H264SEIMessage() {
memset(this, 0, sizeof(*this));
}
-#define READ_BITS_OR_RETURN(num_bits, out) \
-do { \
- int _out; \
- if (!br_.ReadBits(num_bits, &_out)) { \
- DVLOG(1) << "Error in stream: unexpected EOS while trying to read " #out; \
- return kInvalidStream; \
- } \
- *out = _out; \
-} while (0)
-
-#define READ_BOOL_OR_RETURN(out) \
-do { \
- int _out; \
- if (!br_.ReadBits(1, &_out)) { \
- DVLOG(1) << "Error in stream: unexpected EOS while trying to read " #out; \
- return kInvalidStream; \
- } \
- *out = _out != 0; \
-} while (0)
-
-#define READ_UE_OR_RETURN(out) \
-do { \
- if (ReadUE(out) != kOk) { \
- DVLOG(1) << "Error in stream: invalid value while trying to read " #out; \
- return kInvalidStream; \
- } \
-} while (0)
-
-#define READ_SE_OR_RETURN(out) \
-do { \
- if (ReadSE(out) != kOk) { \
- DVLOG(1) << "Error in stream: invalid value while trying to read " #out; \
- return kInvalidStream; \
- } \
-} while (0)
-
-#define IN_RANGE_OR_RETURN(val, min, max) \
-do { \
- if ((val) < (min) || (val) > (max)) { \
- DVLOG(1) << "Error in stream: invalid value, expected " #val " to be" \
- << " in range [" << (min) << ":" << (max) << "]" \
- << " found " << (val) << " instead"; \
- return kInvalidStream; \
- } \
-} while (0)
-
-#define TRUE_OR_RETURN(a) \
-do { \
- if (!(a)) { \
- DVLOG(1) << "Error in stream: invalid value, expected " << #a; \
- return kInvalidStream; \
- } \
-} while (0)
+#define READ_BITS_OR_RETURN(num_bits, out) \
+ do { \
+ int _out; \
+ if (!br_.ReadBits(num_bits, &_out)) { \
+ DVLOG(1) \
+ << "Error in stream: unexpected EOS while trying to read " #out; \
+ return kInvalidStream; \
+ } \
+ *out = _out; \
+ } while (0)
+
+#define READ_BOOL_OR_RETURN(out) \
+ do { \
+ int _out; \
+ if (!br_.ReadBits(1, &_out)) { \
+ DVLOG(1) \
+ << "Error in stream: unexpected EOS while trying to read " #out; \
+ return kInvalidStream; \
+ } \
+ *out = _out != 0; \
+ } while (0)
+
+#define READ_UE_OR_RETURN(out) \
+ do { \
+ if (ReadUE(out) != kOk) { \
+ DVLOG(1) << "Error in stream: invalid value while trying to read " #out; \
+ return kInvalidStream; \
+ } \
+ } while (0)
+
+#define READ_SE_OR_RETURN(out) \
+ do { \
+ if (ReadSE(out) != kOk) { \
+ DVLOG(1) << "Error in stream: invalid value while trying to read " #out; \
+ return kInvalidStream; \
+ } \
+ } while (0)
+
+#define IN_RANGE_OR_RETURN(val, min, max) \
+ do { \
+ if ((val) < (min) || (val) > (max)) { \
+ DVLOG(1) << "Error in stream: invalid value, expected " #val " to be" \
+ << " in range [" << (min) << ":" << (max) << "]" \
+ << " found " << (val) << " instead"; \
+ return kInvalidStream; \
+ } \
+ } while (0)
+
+#define TRUE_OR_RETURN(a) \
+ do { \
+ if (!(a)) { \
+ DVLOG(1) << "Error in stream: invalid value, expected " << #a; \
+ return kInvalidStream; \
+ } \
+ } while (0)
H264Parser::H264Parser() {
Reset();
@@ -248,7 +250,7 @@ H264Parser::Result H264Parser::ReadSE(int* val) {
return kOk;
}
-H264Parser::Result H264Parser::AdvanceToNextNALU(H264NALU *nalu) {
+H264Parser::Result H264Parser::AdvanceToNextNALU(H264NALU* nalu) {
int data;
off_t off_to_nalu_start;
@@ -291,22 +293,22 @@ H264Parser::Result H264Parser::AdvanceToNextNALU(H264NALU *nalu) {
// Default scaling lists (per spec).
static const int kDefault4x4Intra[kH264ScalingList4x4Length] = {
- 6, 13, 13, 20, 20, 20, 28, 28, 28, 28, 32, 32, 32, 37, 37, 42, };
+ 6, 13, 13, 20, 20, 20, 28, 28, 28, 28, 32, 32, 32, 37, 37, 42, };
static const int kDefault4x4Inter[kH264ScalingList4x4Length] = {
- 10, 14, 14, 20, 20, 20, 24, 24, 24, 24, 27, 27, 27, 30, 30, 34, };
+ 10, 14, 14, 20, 20, 20, 24, 24, 24, 24, 27, 27, 27, 30, 30, 34, };
static const int kDefault8x8Intra[kH264ScalingList8x8Length] = {
- 6, 10, 10, 13, 11, 13, 16, 16, 16, 16, 18, 18, 18, 18, 18, 23,
- 23, 23, 23, 23, 23, 25, 25, 25, 25, 25, 25, 25, 27, 27, 27, 27,
- 27, 27, 27, 27, 29, 29, 29, 29, 29, 29, 29, 31, 31, 31, 31, 31,
- 31, 33, 33, 33, 33, 33, 36, 36, 36, 36, 38, 38, 38, 40, 40, 42, };
+ 6, 10, 10, 13, 11, 13, 16, 16, 16, 16, 18, 18, 18, 18, 18, 23,
+ 23, 23, 23, 23, 23, 25, 25, 25, 25, 25, 25, 25, 27, 27, 27, 27,
+ 27, 27, 27, 27, 29, 29, 29, 29, 29, 29, 29, 31, 31, 31, 31, 31,
+ 31, 33, 33, 33, 33, 33, 36, 36, 36, 36, 38, 38, 38, 40, 40, 42, };
static const int kDefault8x8Inter[kH264ScalingList8x8Length] = {
- 9, 13, 13, 15, 13, 15, 17, 17, 17, 17, 19, 19, 19, 19, 19, 21,
- 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 24, 24, 24, 24,
- 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 27, 27, 27, 27, 27,
- 27, 28, 28, 28, 28, 28, 30, 30, 30, 30, 32, 32, 32, 33, 33, 35, };
+ 9, 13, 13, 15, 13, 15, 17, 17, 17, 17, 19, 19, 19, 19, 19, 21,
+ 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 24, 24, 24, 24,
+ 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 27, 27, 27, 27, 27,
+ 27, 28, 28, 28, 28, 28, 30, 30, 30, 30, 32, 32, 32, 33, 33, 35, };
static inline void DefaultScalingList4x4(
int i,
@@ -335,8 +337,8 @@ static void FallbackScalingList4x4(
const int default_scaling_list_intra[],
const int default_scaling_list_inter[],
int scaling_list4x4[][kH264ScalingList4x4Length]) {
- static const int kScalingList4x4ByteSize = sizeof(scaling_list4x4[0][0]) *
- kH264ScalingList4x4Length;
+ static const int kScalingList4x4ByteSize =
+ sizeof(scaling_list4x4[0][0]) * kH264ScalingList4x4Length;
switch (i) {
case 0:
@@ -345,13 +347,11 @@ static void FallbackScalingList4x4(
break;
case 1:
- memcpy(scaling_list4x4[i], scaling_list4x4[0],
- kScalingList4x4ByteSize);
+ memcpy(scaling_list4x4[i], scaling_list4x4[0], kScalingList4x4ByteSize);
break;
case 2:
- memcpy(scaling_list4x4[i], scaling_list4x4[1],
- kScalingList4x4ByteSize);
+ memcpy(scaling_list4x4[i], scaling_list4x4[1], kScalingList4x4ByteSize);
break;
case 3:
@@ -360,13 +360,11 @@ static void FallbackScalingList4x4(
break;
case 4:
- memcpy(scaling_list4x4[i], scaling_list4x4[3],
- kScalingList4x4ByteSize);
+ memcpy(scaling_list4x4[i], scaling_list4x4[3], kScalingList4x4ByteSize);
break;
case 5:
- memcpy(scaling_list4x4[i], scaling_list4x4[4],
- kScalingList4x4ByteSize);
+ memcpy(scaling_list4x4[i], scaling_list4x4[4], kScalingList4x4ByteSize);
break;
default:
@@ -380,8 +378,8 @@ static void FallbackScalingList8x8(
const int default_scaling_list_intra[],
const int default_scaling_list_inter[],
int scaling_list8x8[][kH264ScalingList8x8Length]) {
- static const int kScalingList8x8ByteSize = sizeof(scaling_list8x8[0][0]) *
- kH264ScalingList8x8Length;
+ static const int kScalingList8x8ByteSize =
+ sizeof(scaling_list8x8[0][0]) * kH264ScalingList8x8Length;
switch (i) {
case 0:
@@ -395,23 +393,19 @@ static void FallbackScalingList8x8(
break;
case 2:
- memcpy(scaling_list8x8[i], scaling_list8x8[0],
- kScalingList8x8ByteSize);
+ memcpy(scaling_list8x8[i], scaling_list8x8[0], kScalingList8x8ByteSize);
break;
case 3:
- memcpy(scaling_list8x8[i], scaling_list8x8[1],
- kScalingList8x8ByteSize);
+ memcpy(scaling_list8x8[i], scaling_list8x8[1], kScalingList8x8ByteSize);
break;
case 4:
- memcpy(scaling_list8x8[i], scaling_list8x8[2],
- kScalingList8x8ByteSize);
+ memcpy(scaling_list8x8[i], scaling_list8x8[2], kScalingList8x8ByteSize);
break;
case 5:
- memcpy(scaling_list8x8[i], scaling_list8x8[3],
- kScalingList8x8ByteSize);
+ memcpy(scaling_list8x8[i], scaling_list8x8[3], kScalingList8x8ByteSize);
break;
default:
@@ -461,7 +455,8 @@ H264Parser::Result H264Parser::ParseSPSScalingLists(H264SPS* sps) {
if (seq_scaling_list_present_flag) {
res = ParseScalingList(arraysize(sps->scaling_list4x4[i]),
- sps->scaling_list4x4[i], &use_default);
+ sps->scaling_list4x4[i],
+ &use_default);
if (res != kOk)
return res;
@@ -469,8 +464,8 @@ H264Parser::Result H264Parser::ParseSPSScalingLists(H264SPS* sps) {
DefaultScalingList4x4(i, sps->scaling_list4x4);
} else {
- FallbackScalingList4x4(i, kDefault4x4Intra, kDefault4x4Inter,
- sps->scaling_list4x4);
+ FallbackScalingList4x4(
+ i, kDefault4x4Intra, kDefault4x4Inter, sps->scaling_list4x4);
}
}
@@ -480,7 +475,8 @@ H264Parser::Result H264Parser::ParseSPSScalingLists(H264SPS* sps) {
if (seq_scaling_list_present_flag) {
res = ParseScalingList(arraysize(sps->scaling_list8x8[i]),
- sps->scaling_list8x8[i], &use_default);
+ sps->scaling_list8x8[i],
+ &use_default);
if (res != kOk)
return res;
@@ -488,8 +484,8 @@ H264Parser::Result H264Parser::ParseSPSScalingLists(H264SPS* sps) {
DefaultScalingList8x8(i, sps->scaling_list8x8);
} else {
- FallbackScalingList8x8(i, kDefault8x8Intra, kDefault8x8Inter,
- sps->scaling_list8x8);
+ FallbackScalingList8x8(
+ i, kDefault8x8Intra, kDefault8x8Inter, sps->scaling_list8x8);
}
}
@@ -508,7 +504,8 @@ H264Parser::Result H264Parser::ParsePPSScalingLists(const H264SPS& sps,
if (pic_scaling_list_present_flag) {
res = ParseScalingList(arraysize(pps->scaling_list4x4[i]),
- pps->scaling_list4x4[i], &use_default);
+ pps->scaling_list4x4[i],
+ &use_default);
if (res != kOk)
return res;
@@ -518,12 +515,14 @@ H264Parser::Result H264Parser::ParsePPSScalingLists(const H264SPS& sps,
} else {
if (sps.seq_scaling_matrix_present_flag) {
// Table 7-2 fallback rule A in spec.
- FallbackScalingList4x4(i, kDefault4x4Intra, kDefault4x4Inter,
- pps->scaling_list4x4);
+ FallbackScalingList4x4(
+ i, kDefault4x4Intra, kDefault4x4Inter, pps->scaling_list4x4);
} else {
// Table 7-2 fallback rule B in spec.
- FallbackScalingList4x4(i, sps.scaling_list4x4[0],
- sps.scaling_list4x4[3], pps->scaling_list4x4);
+ FallbackScalingList4x4(i,
+ sps.scaling_list4x4[0],
+ sps.scaling_list4x4[3],
+ pps->scaling_list4x4);
}
}
}
@@ -534,7 +533,8 @@ H264Parser::Result H264Parser::ParsePPSScalingLists(const H264SPS& sps,
if (pic_scaling_list_present_flag) {
res = ParseScalingList(arraysize(pps->scaling_list8x8[i]),
- pps->scaling_list8x8[i], &use_default);
+ pps->scaling_list8x8[i],
+ &use_default);
if (res != kOk)
return res;
@@ -544,12 +544,14 @@ H264Parser::Result H264Parser::ParsePPSScalingLists(const H264SPS& sps,
} else {
if (sps.seq_scaling_matrix_present_flag) {
// Table 7-2 fallback rule A in spec.
- FallbackScalingList8x8(i, kDefault8x8Intra,
- kDefault8x8Inter, pps->scaling_list8x8);
+ FallbackScalingList8x8(
+ i, kDefault8x8Intra, kDefault8x8Inter, pps->scaling_list8x8);
} else {
// Table 7-2 fallback rule B in spec.
- FallbackScalingList8x8(i, sps.scaling_list8x8[0],
- sps.scaling_list8x8[1], pps->scaling_list8x8);
+ FallbackScalingList8x8(i,
+ sps.scaling_list8x8[0],
+ sps.scaling_list8x8[1],
+ pps->scaling_list8x8);
}
}
}
@@ -585,8 +587,8 @@ H264Parser::Result H264Parser::ParseSPS(int* sps_id) {
if (sps->profile_idc == 100 || sps->profile_idc == 110 ||
sps->profile_idc == 122 || sps->profile_idc == 244 ||
- sps->profile_idc == 44 || sps->profile_idc == 83 ||
- sps->profile_idc == 86 || sps->profile_idc == 118 ||
+ sps->profile_idc == 44 || sps->profile_idc == 83 ||
+ sps->profile_idc == 86 || sps->profile_idc == 118 ||
sps->profile_idc == 128) {
READ_UE_OR_RETURN(&sps->chroma_format_idc);
TRUE_OR_RETURN(sps->chroma_format_idc < 4);
@@ -897,7 +899,7 @@ H264Parser::Result H264Parser::ParsePredWeightTable(const H264SPS& sps,
return kOk;
}
-H264Parser::Result H264Parser::ParseDecRefPicMarking(H264SliceHeader *shdr) {
+H264Parser::Result H264Parser::ParseDecRefPicMarking(H264SliceHeader* shdr) {
if (shdr->idr_pic_flag) {
READ_BOOL_OR_RETURN(&shdr->no_output_of_prior_pics_flag);
READ_BOOL_OR_RETURN(&shdr->long_term_reference_flag);
@@ -973,8 +975,7 @@ H264Parser::Result H264Parser::ParseSliceHeader(const H264NALU& nalu,
return kUnsupportedStream;
}
- READ_BITS_OR_RETURN(sps->log2_max_frame_num_minus4 + 4,
- &shdr->frame_num);
+ READ_BITS_OR_RETURN(sps->log2_max_frame_num_minus4 + 4, &shdr->frame_num);
if (!sps->frame_mbs_only_flag) {
READ_BOOL_OR_RETURN(&shdr->field_pic_flag);
if (shdr->field_pic_flag) {
@@ -1053,8 +1054,8 @@ H264Parser::Result H264Parser::ParseSliceHeader(const H264NALU& nalu,
return res;
}
- if (pps->entropy_coding_mode_flag &&
- !shdr->IsISlice() && !shdr->IsSISlice()) {
+ if (pps->entropy_coding_mode_flag && !shdr->IsISlice() &&
+ !shdr->IsSISlice()) {
READ_UE_OR_RETURN(&shdr->cabac_init_idc);
TRUE_OR_RETURN(shdr->cabac_init_idc < 3);
}
@@ -1118,8 +1119,7 @@ H264Parser::Result H264Parser::ParseSEI(H264SEIMessage* sei_msg) {
READ_UE_OR_RETURN(&sei_msg->recovery_point.recovery_frame_cnt);
READ_BOOL_OR_RETURN(&sei_msg->recovery_point.exact_match_flag);
READ_BOOL_OR_RETURN(&sei_msg->recovery_point.broken_link_flag);
- READ_BITS_OR_RETURN(2,
- &sei_msg->recovery_point.changing_slice_group_idc);
+ READ_BITS_OR_RETURN(2, &sei_msg->recovery_point.changing_slice_group_idc);
break;
default:
@@ -1130,4 +1130,4 @@ H264Parser::Result H264Parser::ParseSEI(H264SEIMessage* sei_msg) {
return kOk;
}
-} // namespace content
+} // namespace media
« no previous file with comments | « media/filters/h264_parser.h ('k') | media/filters/h264_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698