| 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 |