OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include <algorithm> | 5 #include <algorithm> |
6 #include <iterator> | 6 #include <iterator> |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 class MimeUtil : public PlatformMimeUtil { | 52 class MimeUtil : public PlatformMimeUtil { |
53 public: | 53 public: |
54 enum Codec { | 54 enum Codec { |
55 INVALID_CODEC, | 55 INVALID_CODEC, |
56 PCM, | 56 PCM, |
57 MP3, | 57 MP3, |
58 MPEG2_AAC_LC, | 58 MPEG2_AAC_LC, |
59 MPEG2_AAC_MAIN, | 59 MPEG2_AAC_MAIN, |
60 MPEG2_AAC_SSR, | 60 MPEG2_AAC_SSR, |
61 MPEG4_AAC_LC, | 61 MPEG4_AAC_LC, |
62 MPEG4_AAC_SBRv1, | 62 MPEG4_AAC_SBR_v1, |
| 63 MPEG4_AAC_SBR_PS_v2, |
63 VORBIS, | 64 VORBIS, |
64 OPUS, | 65 OPUS, |
65 H264_BASELINE, | 66 H264_BASELINE, |
66 H264_MAIN, | 67 H264_MAIN, |
67 H264_HIGH, | 68 H264_HIGH, |
68 VP8, | 69 VP8, |
69 VP9, | 70 VP9, |
70 THEORA | 71 THEORA |
71 }; | 72 }; |
72 | 73 |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 | 469 |
469 #if defined(OS_ANDROID) | 470 #if defined(OS_ANDROID) |
470 static bool IsCodecSupportedOnAndroid(MimeUtil::Codec codec) { | 471 static bool IsCodecSupportedOnAndroid(MimeUtil::Codec codec) { |
471 switch (codec) { | 472 switch (codec) { |
472 case MimeUtil::INVALID_CODEC: | 473 case MimeUtil::INVALID_CODEC: |
473 return false; | 474 return false; |
474 | 475 |
475 case MimeUtil::PCM: | 476 case MimeUtil::PCM: |
476 case MimeUtil::MP3: | 477 case MimeUtil::MP3: |
477 case MimeUtil::MPEG4_AAC_LC: | 478 case MimeUtil::MPEG4_AAC_LC: |
478 case MimeUtil::MPEG4_AAC_SBRv1: | 479 case MimeUtil::MPEG4_AAC_SBR_v1: |
| 480 case MimeUtil::MPEG4_AAC_SBR_PS_v2: |
479 case MimeUtil::H264_BASELINE: | 481 case MimeUtil::H264_BASELINE: |
480 case MimeUtil::H264_MAIN: | 482 case MimeUtil::H264_MAIN: |
481 case MimeUtil::H264_HIGH: | 483 case MimeUtil::H264_HIGH: |
482 case MimeUtil::VP8: | 484 case MimeUtil::VP8: |
483 case MimeUtil::VORBIS: | 485 case MimeUtil::VORBIS: |
484 return true; | 486 return true; |
485 | 487 |
486 case MimeUtil::MPEG2_AAC_LC: | 488 case MimeUtil::MPEG2_AAC_LC: |
487 case MimeUtil::MPEG2_AAC_MAIN: | 489 case MimeUtil::MPEG2_AAC_MAIN: |
488 case MimeUtil::MPEG2_AAC_SSR: | 490 case MimeUtil::MPEG2_AAC_SSR: |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
521 const char* codecs_list; | 523 const char* codecs_list; |
522 }; | 524 }; |
523 | 525 |
524 // Following is the list of RFC 6381 compliant codecs: | 526 // Following is the list of RFC 6381 compliant codecs: |
525 // mp4a.66 - MPEG-2 AAC MAIN | 527 // mp4a.66 - MPEG-2 AAC MAIN |
526 // mp4a.67 - MPEG-2 AAC LC | 528 // mp4a.67 - MPEG-2 AAC LC |
527 // mp4a.68 - MPEG-2 AAC SSR | 529 // mp4a.68 - MPEG-2 AAC SSR |
528 // mp4a.69 - MPEG-2 extension to MPEG-1 | 530 // mp4a.69 - MPEG-2 extension to MPEG-1 |
529 // mp4a.6B - MPEG-1 audio | 531 // mp4a.6B - MPEG-1 audio |
530 // mp4a.40.2 - MPEG-4 AAC LC | 532 // mp4a.40.2 - MPEG-4 AAC LC |
531 // mp4a.40.5 - MPEG-4 AAC SBRv1 | 533 // mp4a.40.5 - MPEG-4 HE-AAC v1 (AAC LC + SBR) |
| 534 // mp4a.40.29 - MPEG-4 HE-AAC v2 (AAC LC + SBR + PS) |
532 // | 535 // |
533 // avc1.42E0xx - H.264 Baseline | 536 // avc1.42E0xx - H.264 Baseline |
534 // avc1.4D40xx - H.264 Main | 537 // avc1.4D40xx - H.264 Main |
535 // avc1.6400xx - H.264 High | 538 // avc1.6400xx - H.264 High |
536 static const char kMP4AudioCodecsExpression[] = | 539 static const char kMP4AudioCodecsExpression[] = |
537 "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.5"; | 540 "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.5,mp4a.40.29"; |
538 static const char kMP4VideoCodecsExpression[] = | 541 static const char kMP4VideoCodecsExpression[] = |
539 "avc1.42E00A,avc1.4D400A,avc1.64000A," \ | 542 "avc1.42E00A,avc1.4D400A,avc1.64000A," \ |
540 "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.5"; | 543 "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.5,mp4a.40.29"; |
541 | 544 |
542 static const MediaFormatStrict format_codec_mappings[] = { | 545 static const MediaFormatStrict format_codec_mappings[] = { |
543 { "video/webm", "opus,vorbis,vp8,vp8.0,vp9,vp9.0" }, | 546 { "video/webm", "opus,vorbis,vp8,vp8.0,vp9,vp9.0" }, |
544 { "audio/webm", "opus,vorbis" }, | 547 { "audio/webm", "opus,vorbis" }, |
545 { "audio/wav", "1" }, | 548 { "audio/wav", "1" }, |
546 { "audio/x-wav", "1" }, | 549 { "audio/x-wav", "1" }, |
547 { "video/ogg", "opus,theora,vorbis" }, | 550 { "video/ogg", "opus,theora,vorbis" }, |
548 { "audio/ogg", "opus,vorbis" }, | 551 { "audio/ogg", "opus,vorbis" }, |
549 { "application/ogg", "opus,theora,vorbis" }, | 552 { "application/ogg", "opus,theora,vorbis" }, |
550 { "audio/mpeg", "mp3" }, | 553 { "audio/mpeg", "mp3" }, |
(...skipping 18 matching lines...) Expand all Loading... |
569 // The "mp4a" strings come from RFC 6381. | 572 // The "mp4a" strings come from RFC 6381. |
570 static const CodecIDMappings kUnambiguousCodecIDs[] = { | 573 static const CodecIDMappings kUnambiguousCodecIDs[] = { |
571 { "1", MimeUtil::PCM }, // We only allow this for WAV so it isn't ambiguous. | 574 { "1", MimeUtil::PCM }, // We only allow this for WAV so it isn't ambiguous. |
572 { "mp3", MimeUtil::MP3 }, | 575 { "mp3", MimeUtil::MP3 }, |
573 { "mp4a.66", MimeUtil::MPEG2_AAC_MAIN }, | 576 { "mp4a.66", MimeUtil::MPEG2_AAC_MAIN }, |
574 { "mp4a.67", MimeUtil::MPEG2_AAC_LC }, | 577 { "mp4a.67", MimeUtil::MPEG2_AAC_LC }, |
575 { "mp4a.68", MimeUtil::MPEG2_AAC_SSR }, | 578 { "mp4a.68", MimeUtil::MPEG2_AAC_SSR }, |
576 { "mp4a.69", MimeUtil::MP3 }, | 579 { "mp4a.69", MimeUtil::MP3 }, |
577 { "mp4a.6B", MimeUtil::MP3 }, | 580 { "mp4a.6B", MimeUtil::MP3 }, |
578 { "mp4a.40.2", MimeUtil::MPEG4_AAC_LC }, | 581 { "mp4a.40.2", MimeUtil::MPEG4_AAC_LC }, |
579 { "mp4a.40.5", MimeUtil::MPEG4_AAC_SBRv1 }, | 582 { "mp4a.40.5", MimeUtil::MPEG4_AAC_SBR_v1 }, |
| 583 { "mp4a.40.29", MimeUtil::MPEG4_AAC_SBR_PS_v2 }, |
580 { "vorbis", MimeUtil::VORBIS }, | 584 { "vorbis", MimeUtil::VORBIS }, |
581 { "opus", MimeUtil::OPUS }, | 585 { "opus", MimeUtil::OPUS }, |
582 { "vp8", MimeUtil::VP8 }, | 586 { "vp8", MimeUtil::VP8 }, |
583 { "vp8.0", MimeUtil::VP8 }, | 587 { "vp8.0", MimeUtil::VP8 }, |
584 { "vp9", MimeUtil::VP9 }, | 588 { "vp9", MimeUtil::VP9 }, |
585 { "vp9.0", MimeUtil::VP9 }, | 589 { "vp9.0", MimeUtil::VP9 }, |
586 { "theora", MimeUtil::THEORA } | 590 { "theora", MimeUtil::THEORA } |
587 }; | 591 }; |
588 | 592 |
589 // List of codec IDs that are ambiguous and don't provide | 593 // List of codec IDs that are ambiguous and don't provide |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1037 } | 1041 } |
1038 | 1042 |
1039 bool MimeUtil::IsCodecProprietary(Codec codec) const { | 1043 bool MimeUtil::IsCodecProprietary(Codec codec) const { |
1040 switch (codec) { | 1044 switch (codec) { |
1041 case INVALID_CODEC: | 1045 case INVALID_CODEC: |
1042 case MP3: | 1046 case MP3: |
1043 case MPEG2_AAC_LC: | 1047 case MPEG2_AAC_LC: |
1044 case MPEG2_AAC_MAIN: | 1048 case MPEG2_AAC_MAIN: |
1045 case MPEG2_AAC_SSR: | 1049 case MPEG2_AAC_SSR: |
1046 case MPEG4_AAC_LC: | 1050 case MPEG4_AAC_LC: |
1047 case MPEG4_AAC_SBRv1: | 1051 case MPEG4_AAC_SBR_v1: |
| 1052 case MPEG4_AAC_SBR_PS_v2: |
1048 case H264_BASELINE: | 1053 case H264_BASELINE: |
1049 case H264_MAIN: | 1054 case H264_MAIN: |
1050 case H264_HIGH: | 1055 case H264_HIGH: |
1051 return true; | 1056 return true; |
1052 | 1057 |
1053 case PCM: | 1058 case PCM: |
1054 case VORBIS: | 1059 case VORBIS: |
1055 case OPUS: | 1060 case OPUS: |
1056 case VP8: | 1061 case VP8: |
1057 case VP9: | 1062 case VP9: |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1398 post_data->append("\r\n" + value + "\r\n"); | 1403 post_data->append("\r\n" + value + "\r\n"); |
1399 } | 1404 } |
1400 | 1405 |
1401 void AddMultipartFinalDelimiterForUpload(const std::string& mime_boundary, | 1406 void AddMultipartFinalDelimiterForUpload(const std::string& mime_boundary, |
1402 std::string* post_data) { | 1407 std::string* post_data) { |
1403 DCHECK(post_data); | 1408 DCHECK(post_data); |
1404 post_data->append("--" + mime_boundary + "--\r\n"); | 1409 post_data->append("--" + mime_boundary + "--\r\n"); |
1405 } | 1410 } |
1406 | 1411 |
1407 } // namespace net | 1412 } // namespace net |
OLD | NEW |