OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // This file contains an implementation of an H264 Annex-B video stream parser. | 5 // This file contains an implementation of an H264 Annex-B video stream parser. |
6 | 6 |
7 #ifndef MEDIA_FILTERS_H264_PARSER_H_ | 7 #ifndef MEDIA_FILTERS_H264_PARSER_H_ |
8 #define MEDIA_FILTERS_H264_PARSER_H_ | 8 #define MEDIA_FILTERS_H264_PARSER_H_ |
9 | 9 |
10 #include <sys/types.h> | 10 #include <sys/types.h> |
11 | 11 |
12 #include <map> | 12 #include <map> |
13 | 13 |
14 #include "base/basictypes.h" | 14 #include "base/basictypes.h" |
15 #include "media/base/media_export.h" | 15 #include "media/base/media_export.h" |
16 #include "media/filters/h264_bit_reader.h" | 16 #include "media/filters/h264_bit_reader.h" |
17 | 17 |
18 namespace media { | 18 namespace media { |
19 | 19 |
20 // For explanations of each struct and its members, see H.264 specification | 20 // For explanations of each struct and its members, see H.264 specification |
21 // at http://www.itu.int/rec/T-REC-H.264. | 21 // at http://www.itu.int/rec/T-REC-H.264. |
22 struct MEDIA_EXPORT H264NALU { | 22 struct MEDIA_EXPORT H264NALU { |
23 H264NALU(); | 23 H264NALU(); |
24 | 24 |
25 enum Type { | 25 enum Type { |
26 kUnspecified = 0, | 26 kUnspecified = 0, |
27 kNonIDRSlice = 1, | 27 kNonIDRSlice = 1, |
| 28 kSliceDataA = 2, |
| 29 kSliceDataB = 3, |
| 30 kSliceDataC = 4, |
28 kIDRSlice = 5, | 31 kIDRSlice = 5, |
29 kSEIMessage = 6, | 32 kSEIMessage = 6, |
30 kSPS = 7, | 33 kSPS = 7, |
31 kPPS = 8, | 34 kPPS = 8, |
32 kAUD = 9, | 35 kAUD = 9, |
33 kEOSeq = 10, | 36 kEOSeq = 10, |
34 kEOStream = 11, | 37 kEOStream = 11, |
| 38 kFiller = 12, |
| 39 kSPSExt = 13, |
| 40 kReserved14 = 14, |
| 41 kReserved15 = 15, |
| 42 kReserved16 = 16, |
| 43 kReserved17 = 17, |
| 44 kReserved18 = 18, |
| 45 kCodedSliceAux = 19, |
35 kCodedSliceExtension = 20, | 46 kCodedSliceExtension = 20, |
36 }; | 47 }; |
37 | 48 |
38 // After (without) start code; we don't own the underlying memory | 49 // After (without) start code; we don't own the underlying memory |
39 // and a shallow copy should be made when copying this struct. | 50 // and a shallow copy should be made when copying this struct. |
40 const uint8* data; | 51 const uint8* data; |
41 off_t size; // From after start code to start code of next NALU (or EOS). | 52 off_t size; // From after start code to start code of next NALU (or EOS). |
42 | 53 |
43 int nal_ref_idc; | 54 int nal_ref_idc; |
44 int nal_unit_type; | 55 int nal_unit_type; |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 typedef std::map<int, H264PPS*> PPSById; | 401 typedef std::map<int, H264PPS*> PPSById; |
391 SPSById active_SPSes_; | 402 SPSById active_SPSes_; |
392 PPSById active_PPSes_; | 403 PPSById active_PPSes_; |
393 | 404 |
394 DISALLOW_COPY_AND_ASSIGN(H264Parser); | 405 DISALLOW_COPY_AND_ASSIGN(H264Parser); |
395 }; | 406 }; |
396 | 407 |
397 } // namespace media | 408 } // namespace media |
398 | 409 |
399 #endif // MEDIA_FILTERS_H264_PARSER_H_ | 410 #endif // MEDIA_FILTERS_H264_PARSER_H_ |
OLD | NEW |