Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / media / formats / webm / webm_content_encodings_client.h
blob85f7bf329a88e5e39e2e58cceba5f2596a1b760d
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
3 // found in the LICENSE file.
5 #ifndef MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_CLIENT_H_
6 #define MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_CLIENT_H_
8 #include <vector>
10 #include "base/callback.h"
11 #include "base/compiler_specific.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "media/base/media_export.h"
14 #include "media/base/media_log.h"
15 #include "media/formats/webm/webm_content_encodings.h"
16 #include "media/formats/webm/webm_parser.h"
18 namespace media {
20 typedef std::vector<ContentEncoding*> ContentEncodings;
22 // Parser for WebM ContentEncodings element.
23 class MEDIA_EXPORT WebMContentEncodingsClient : public WebMParserClient {
24 public:
25 explicit WebMContentEncodingsClient(const scoped_refptr<MediaLog>& media_log);
26 ~WebMContentEncodingsClient() override;
28 const ContentEncodings& content_encodings() const;
30 // WebMParserClient methods
31 WebMParserClient* OnListStart(int id) override;
32 bool OnListEnd(int id) override;
33 bool OnUInt(int id, int64 val) override;
34 bool OnBinary(int id, const uint8* data, int size) override;
36 private:
37 scoped_refptr<MediaLog> media_log_;
38 scoped_ptr<ContentEncoding> cur_content_encoding_;
39 bool content_encryption_encountered_;
40 ContentEncodings content_encodings_;
42 // |content_encodings_| is ready. For debugging purpose.
43 bool content_encodings_ready_;
45 DISALLOW_COPY_AND_ASSIGN(WebMContentEncodingsClient);
48 } // namespace media
50 #endif // MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_CLIENT_H_