Changeset 167025 in webkit
- Timestamp:
- Apr 9, 2014 11:43:40 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 24 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r166984 r167025 1 2014-04-09 Brendan Long <b.long@cablelabs.com> 2 3 [GStreamer] Expose MPEG-TS metadata 4 https://bugs.webkit.org/show_bug.cgi?id=122001 5 6 Reviewed by Eric Carlson. 7 8 * Source/cmake/FindGStreamer.cmake: Look for gstreamer-mpegts >= 1.3.0. 9 * Source/cmake/OptionsEfl.cmake: Same. 10 * Source/cmake/OptionsGTK.cmake: Same. 11 1 12 2014-04-08 Brian J. Burg <burg@cs.washington.edu> 2 13 -
trunk/LayoutTests/ChangeLog
r167024 r167025 1 2014-04-09 Brendan Long <b.long@cablelabs.com> 2 3 [GStreamer] Expose MPEG-TS metadata 4 https://bugs.webkit.org/show_bug.cgi?id=122001 5 6 Reviewed by Eric Carlson. 7 8 * media/content/user-private-streams.ts: Added. 9 * media/track/in-band/track-in-band-mpegts-metadata-expected.txt: Added. 10 * media/track/in-band/track-in-band-mpegts-metadata.html: Added. 11 1 12 2014-04-08 Chris Fleizach <cfleizach@apple.com> 2 13 -
trunk/Source/WebCore/CMakeLists.txt
r167016 r167025 2723 2723 html/track/BufferedLineReader.cpp 2724 2724 html/track/DataCue.cpp 2725 html/track/InbandDataTextTrack.cpp 2725 2726 html/track/InbandGenericTextTrack.cpp 2726 2727 html/track/InbandTextTrack.cpp -
trunk/Source/WebCore/ChangeLog
r167024 r167025 1 2014-04-09 Brendan Long <b.long@cablelabs.com> 2 3 [GStreamer] Expose MPEG-TS metadata 4 https://bugs.webkit.org/show_bug.cgi?id=122001 5 6 Reviewed by Eric Carlson. 7 8 Test: media/track/in-band/track-in-band-mpegts-metadata.html 9 10 * CMakeLists.txt: Add InbandDataTextTrack. 11 * PlatformGTK.cmake: Look for gstreamer-mpegts and use it if available. 12 * WebCore.vcxproj/WebCore.vcxproj: Add InbandDataTextTrack. 13 * WebCore.vcxproj/WebCore.vcxproj.filters: Same. 14 * WebCore.xcodeproj/project.pbxproj: Same. 15 * html/track/DataCue.cpp: 16 (WebCore::DataCue::DataCue): Add a constructor using raw data. 17 * html/track/DataCue.h: 18 (WebCore::DataCue::create): Same. 19 * html/track/InbandDataTextTrack.cpp: Added, InbandTextTrack which implements addDataCue(). 20 * html/track/InbandDataTextTrack.h: 21 * html/track/InbandGenericTextTrack.h: Move unimplemented methods to InbandTextTrack. 22 * html/track/InbandWebVTTTextTrack.h: Same. 23 * html/track/InbandTextTrack.h: Same, and add inBandMetadataTrackDispatchType. 24 * html/track/InbandTextTrack.cpp: 25 (WebCore::InbandTextTrack::create): Add constructor for InbandDataTextTrack. 26 (WebCore::InbandTextTrack::inBandMetadataTrackDispatchType): Added. 27 * html/track/TextTrack.h: 28 (WebCore::TextTrack::inBandMetadataTrackDispatchType): Added (empty). 29 * html/track/TextTrack.idl: Add inBandMetadataTrackDispatchType. 30 * platform/graphics/InbandTextTrackPrivate.h: Add inBandMetadataTrackDispatchType and Data format. 31 (WebCore::InbandTextTrackPrivate::inBandMetadataTrackDispatchType): 32 * platform/graphics/InbandTextTrackPrivateClient.h: Add addDataCue() method. 33 * platform/graphics/gstreamer/InbandMetadataTextTrackPrivateGStreamer.h: 34 (WebCore::InbandMetadataTextTrackPrivateGStreamer::create): Allow specifying the cue format and id. 35 (WebCore::InbandMetadataTextTrackPrivateGStreamer::InbandMetadataTextTrackPrivateGStreamer): Same. 36 (WebCore::InbandMetadataTextTrackPrivateGStreamer::setInBandMetadataTrackDispatchType): Added. 37 (WebCore::InbandMetadataTextTrackPrivateGStreamer::addDataCue): Added. 38 (WebCore::InbandMetadataTextTrackPrivateGStreamer::addGenericCue): Added. 39 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: 40 (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Check for MPEG-TS sections. 41 (WebCore::MediaPlayerPrivateGStreamer::processMpegTsSection): Add MPEG-TS section metadata, and get inBandMetadataTrackDispatchType from the PMT. 42 (WebCore::MediaPlayerPrivateGStreamer::processTableOfContents): Explicitly use Generic CueFormat. 43 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: 44 1 45 2014-04-08 Chris Fleizach <cfleizach@apple.com> 2 46 -
trunk/Source/WebCore/PlatformGTK.cmake
r167016 r167025 344 344 ${GSTREAMER_VIDEO_LIBRARIES} 345 345 ) 346 347 if (USE_GSTREAMER_MPEGTS) 348 list(APPEND WebCore_INCLUDE_DIRECTORIES 349 ${GSTREAMER_MPEGTS_INCLUDE_DIRS} 350 ) 351 352 list(APPEND WebCore_LIBRARIES 353 ${GSTREAMER_MPEGTS_LIBRARIES} 354 ) 355 endif () 346 356 endif () 347 357 … … 456 466 list(APPEND GObjectDOMBindings_IDL_FILES 457 467 Modules/battery/BatteryManager.idl 468 458 469 Modules/gamepad/Gamepad.idl 459 470 Modules/gamepad/GamepadList.idl 471 460 472 Modules/geolocation/Geolocation.idl 473 461 474 Modules/mediasource/VideoPlaybackQuality.idl 475 462 476 Modules/quota/StorageInfo.idl 463 477 Modules/quota/StorageQuota.idl 478 464 479 Modules/webdatabase/Database.idl 465 480 -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r166965 r167025 15870 15870 <ClCompile Include="..\html\track\BufferedLineReader.cpp" /> 15871 15871 <ClCompile Include="..\html\track\DataCue.cpp" /> 15872 <ClCompile Include="..\html\track\InbandDataTextTrack.cpp" /> 15872 15873 <ClCompile Include="..\html\track\InbandGenericTextTrack.cpp" /> 15873 15874 <ClCompile Include="..\html\track\InbandTextTrack.cpp" /> … … 20670 20671 <ClInclude Include="..\html\track\BufferedLineReader.h" /> 20671 20672 <ClInclude Include="..\html\track\DataCue.h" /> 20673 <ClInclude Include="..\html\track\InbandDataTextTrack.h" /> 20672 20674 <ClInclude Include="..\html\track\InbandGenericTextTrack.h" /> 20673 20675 <ClInclude Include="..\html\track\InbandTextTrack.h" /> -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
r166965 r167025 4177 4177 <Filter>html\track</Filter> 4178 4178 </ClCompile> 4179 <ClCompile Include="..\html\track\InbandDataTextTrack.cpp"> 4180 <Filter>html\track</Filter> 4181 </ClCompile> 4179 4182 <ClCompile Include="..\html\track\InbandGenericTextTrack.cpp"> 4180 4183 <Filter>html\track</Filter> … … 11259 11262 </ClInclude> 11260 11263 <ClInclude Include="..\html\track\DataCue.h"> 11264 <Filter>html\track</Filter> 11265 </ClInclude> 11266 <ClInclude Include="..\html\track\InbandDataTextTrack.h"> 11261 11267 <Filter>html\track</Filter> 11262 11268 </ClInclude> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r166997 r167025 5418 5418 BE8EF04D171C9014009B48C3 /* JSVideoTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF049171C9014009B48C3 /* JSVideoTrackList.h */; }; 5419 5419 BE913D80181EF92400DCB09E /* TrackPrivateBase.h in Headers */ = {isa = PBXBuildFile; fileRef = BE913D7F181EF8E500DCB09E /* TrackPrivateBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5420 BE961C5418AD338500D07DC5 /* InbandDataTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE961C5218AD337C00D07DC5 /* InbandDataTextTrack.cpp */; }; 5421 BE961C5518AD338C00D07DC5 /* InbandDataTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE961C5318AD337C00D07DC5 /* InbandDataTextTrack.h */; }; 5420 5422 BEA807C80F714A0300524199 /* SelectionRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEA807C60F714A0300524199 /* SelectionRect.cpp */; }; 5421 5423 BEA807C90F714A0300524199 /* SelectionRect.h in Headers */ = {isa = PBXBuildFile; fileRef = BEA807C70F714A0300524199 /* SelectionRect.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 12723 12725 BE91FC8B06133666005E3790 /* Position.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Position.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 12724 12726 BE91FC8C06133666005E3790 /* Position.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Position.cpp; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 12727 BE961C5218AD337C00D07DC5 /* InbandDataTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandDataTextTrack.cpp; sourceTree = "<group>"; }; 12728 BE961C5318AD337C00D07DC5 /* InbandDataTextTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandDataTextTrack.h; sourceTree = "<group>"; }; 12725 12729 BE983D95052A2E0A00892D85 /* WebCoreKeyboardUIMode.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreKeyboardUIMode.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 12726 12730 BEA807C60F714A0300524199 /* SelectionRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SelectionRect.cpp; path = ios/SelectionRect.cpp; sourceTree = "<group>"; }; … … 19344 19348 BE23480A18A9870300E4B6E8 /* DataCue.h */, 19345 19349 BE23480B18A9870300E4B6E8 /* DataCue.idl */, 19350 BE961C5218AD337C00D07DC5 /* InbandDataTextTrack.cpp */, 19351 BE961C5318AD337C00D07DC5 /* InbandDataTextTrack.h */, 19346 19352 BE16C58E17CFE17200852C04 /* InbandGenericTextTrack.cpp */, 19347 19353 BE16C58F17CFE17200852C04 /* InbandGenericTextTrack.h */, … … 24427 24433 A80E7A180A19C3D6007FB8C5 /* JSHTMLMetaElement.h in Headers */, 24428 24434 A7BBE26711AFB3F20005EA03 /* JSHTMLMeterElement.h in Headers */, 24435 BE961C5518AD338C00D07DC5 /* InbandDataTextTrack.h in Headers */, 24429 24436 1AE2AB2A0A1CE63B00B42B25 /* JSHTMLModElement.h in Headers */, 24430 24437 BC305C7A0C076BB300CD20F0 /* JSHTMLObjectElement.h in Headers */, … … 26966 26973 4162A450101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp in Sources */, 26967 26974 41A3D58E101C152D00316D07 /* DedicatedWorkerThread.cpp in Sources */, 26975 BE961C5418AD338500D07DC5 /* InbandDataTextTrack.cpp in Sources */, 26968 26976 FD06DFA5134A4DEF006F5D7D /* DefaultAudioDestinationNode.cpp in Sources */, 26969 26977 CD2F4A2718D8A3490063746D /* AudioHardwareListenerMac.cpp in Sources */, -
trunk/Source/WebCore/html/track/DataCue.cpp
r165676 r167025 41 41 } 42 42 43 DataCue::DataCue(ScriptExecutionContext& context, double start, double end, const void* data, unsigned length) 44 : TextTrackCue(context, start, end) 45 { 46 m_data = ArrayBuffer::create(data, length); 47 } 48 43 49 DataCue::~DataCue() 44 50 { -
trunk/Source/WebCore/html/track/DataCue.h
r165676 r167025 44 44 } 45 45 46 static PassRefPtr<DataCue> create(ScriptExecutionContext& context, double start, double end, const void* data, unsigned length) 47 { 48 return adoptRef(new DataCue(context, start, end, data, length)); 49 } 50 46 51 virtual ~DataCue(); 47 52 virtual CueType cueType() const { return Data; } … … 53 58 protected: 54 59 DataCue(ScriptExecutionContext&, double start, double end, ArrayBuffer*, ExceptionCode&); 60 DataCue(ScriptExecutionContext&, double start, double end, const void* data, unsigned length); 55 61 56 62 private: -
trunk/Source/WebCore/html/track/InbandDataTextTrack.cpp
r167024 r167025 1 1 /* 2 * Copyright (C) 2014 Cable Television Labs Inc. All rights reserved.2 * Copyright (C) 2014 Cable Television Labs Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 11 11 * documentation and/or other materials provided with the distribution. 12 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, … … 24 24 */ 25 25 26 #ifndef DataCue_h 27 #define DataCue_h 26 #include "config.h" 28 27 29 28 #if ENABLE(VIDEO_TRACK) 29 #include "InbandDataTextTrack.h" 30 30 31 #include "TextTrackCue.h" 31 #include "DataCue.h" 32 #include "ExceptionCodePlaceholder.h" 33 #include "InbandTextTrackPrivate.h" 32 34 #include <runtime/ArrayBuffer.h> 33 #include <wtf/RefCounted.h>34 35 35 36 namespace WebCore { 36 37 37 class ScriptExecutionContext; 38 PassRefPtr<InbandDataTextTrack> InbandDataTextTrack::create(ScriptExecutionContext* context, TextTrackClient* client, PassRefPtr<InbandTextTrackPrivate> playerPrivate) 39 { 40 return adoptRef(new InbandDataTextTrack(context, client, playerPrivate)); 41 } 38 42 39 class DataCue : public TextTrackCue { 40 public: 41 static PassRefPtr<DataCue> create(ScriptExecutionContext& context, double start, double end, ArrayBuffer* data, ExceptionCode& ec) 42 { 43 return adoptRef(new DataCue(context, start, end, data, ec)); 44 } 43 InbandDataTextTrack::InbandDataTextTrack(ScriptExecutionContext* context, TextTrackClient* client, PassRefPtr<InbandTextTrackPrivate> trackPrivate) 44 : InbandTextTrack(context, client, trackPrivate) 45 { 46 } 45 47 46 virtual ~DataCue(); 47 virtual CueType cueType() const { return Data; } 48 InbandDataTextTrack::~InbandDataTextTrack() 49 { 50 } 48 51 49 RefPtr<ArrayBuffer> data() const; 50 void setData(ArrayBuffer*, ExceptionCode&); 51 String text(bool& isNull) const; 52 53 protected: 54 DataCue(ScriptExecutionContext&, double start, double end, ArrayBuffer*, ExceptionCode&); 55 56 private: 57 RefPtr<ArrayBuffer> m_data; 58 }; 59 60 DataCue* toDataCue(TextTrackCue*); 61 const DataCue* toDataCue(const TextTrackCue*); 52 void InbandDataTextTrack::addDataCue(InbandTextTrackPrivate*, double start, double end, const void* data, unsigned length) 53 { 54 RefPtr<DataCue> cue = DataCue::create(*scriptExecutionContext(), start, end, data, length); 55 addCue(cue.release(), ASSERT_NO_EXCEPTION); 56 } 62 57 63 58 } // namespace WebCore 64 59 65 60 #endif 66 #endif -
trunk/Source/WebCore/html/track/InbandDataTextTrack.h
r167024 r167025 11 11 * documentation and/or other materials provided with the distribution. 12 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, … … 24 24 */ 25 25 26 #ifndef DataCue_h27 #define DataCue_h26 #ifndef InbandDataTextTrack_h 27 #define InbandDataTextTrack_h 28 28 29 29 #if ENABLE(VIDEO_TRACK) 30 30 31 #include "TextTrackCue.h" 32 #include <runtime/ArrayBuffer.h> 33 #include <wtf/RefCounted.h> 31 #include "InbandTextTrack.h" 32 #include <wtf/RefPtr.h> 34 33 35 34 namespace WebCore { 36 35 37 class ScriptExecutionContext; 36 class Document; 37 class InbandTextTrackPrivate; 38 class TextTrackCue; 38 39 39 class DataCue : public TextTrackCue{40 class InbandDataTextTrack : public InbandTextTrack { 40 41 public: 41 static PassRefPtr<DataCue> create(ScriptExecutionContext& context, double start, double end, ArrayBuffer* data, ExceptionCode& ec) 42 { 43 return adoptRef(new DataCue(context, start, end, data, ec)); 44 } 45 46 virtual ~DataCue(); 47 virtual CueType cueType() const { return Data; } 48 49 RefPtr<ArrayBuffer> data() const; 50 void setData(ArrayBuffer*, ExceptionCode&); 51 String text(bool& isNull) const; 52 53 protected: 54 DataCue(ScriptExecutionContext&, double start, double end, ArrayBuffer*, ExceptionCode&); 42 static PassRefPtr<InbandDataTextTrack> create(ScriptExecutionContext*, TextTrackClient*, PassRefPtr<InbandTextTrackPrivate>); 43 virtual ~InbandDataTextTrack(); 55 44 56 45 private: 57 RefPtr<ArrayBuffer> m_data; 46 InbandDataTextTrack(ScriptExecutionContext*, TextTrackClient*, PassRefPtr<InbandTextTrackPrivate>); 47 48 virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, const void*, unsigned) override; 58 49 }; 59 60 DataCue* toDataCue(TextTrackCue*);61 const DataCue* toDataCue(const TextTrackCue*);62 50 63 51 } // namespace WebCore -
trunk/Source/WebCore/html/track/InbandGenericTextTrack.h
r165676 r167025 73 73 virtual void removeCue(TextTrackCue*, ExceptionCode&) override; 74 74 75 virtual void parseWebVTTCueData(InbandTextTrackPrivate*, const char*, unsigned) override { ASSERT_NOT_REACHED(); }76 77 75 PassRefPtr<TextTrackCueGeneric> createCue(PassRefPtr<GenericCueData>); 78 76 void updateCueFromCueData(TextTrackCueGeneric*, GenericCueData*); -
trunk/Source/WebCore/html/track/InbandTextTrack.cpp
r165676 r167025 34 34 #include "ExceptionCodePlaceholder.h" 35 35 #include "HTMLMediaElement.h" 36 #include "InbandDataTextTrack.h" 36 37 #include "InbandGenericTextTrack.h" 37 38 #include "InbandTextTrackPrivate.h" … … 48 49 { 49 50 switch (trackPrivate->cueFormat()) { 51 case InbandTextTrackPrivate::Data: 52 return InbandDataTextTrack::create(context, client, trackPrivate); 50 53 case InbandTextTrackPrivate::Generic: 51 54 return InbandGenericTextTrack::create(context, client, trackPrivate); … … 155 158 } 156 159 160 AtomicString InbandTextTrack::inBandMetadataTrackDispatchType() const 161 { 162 ASSERT(m_private); 163 return m_private->inBandMetadataTrackDispatchType(); 164 } 165 157 166 void InbandTextTrack::idChanged(TrackPrivateBase* trackPrivate, const AtomicString& id) 158 167 { -
trunk/Source/WebCore/html/track/InbandTextTrack.h
r165676 r167025 49 49 size_t inbandTrackIndex(); 50 50 51 virtual AtomicString inBandMetadataTrackDispatchType() const; 52 51 53 protected: 52 54 InbandTextTrack(ScriptExecutionContext*, TextTrackClient*, PassRefPtr<InbandTextTrackPrivate>); … … 61 63 virtual void willRemove(TrackPrivateBase*) override; 62 64 65 virtual void addDataCue(InbandTextTrackPrivate*, double, double, const void*, unsigned) override { ASSERT_NOT_REACHED(); } 66 67 virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) override { ASSERT_NOT_REACHED(); } 68 virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) override { ASSERT_NOT_REACHED(); } 69 virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) override { ASSERT_NOT_REACHED(); } 70 71 virtual void parseWebVTTCueData(InbandTextTrackPrivate*, const char*, unsigned) override { ASSERT_NOT_REACHED(); } 72 63 73 #if USE(PLATFORM_TEXT_TRACK_MENU) 64 74 virtual InbandTextTrackPrivate* privateTrack() override { return m_private.get(); } -
trunk/Source/WebCore/html/track/InbandWebVTTTextTrack.h
r165676 r167025 52 52 virtual void fileFailedToParse() override; 53 53 54 virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) override { ASSERT_NOT_REACHED(); }55 virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) override { ASSERT_NOT_REACHED(); }56 virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) override { ASSERT_NOT_REACHED(); }57 58 54 std::unique_ptr<WebVTTParser> m_webVTTParser; 59 55 }; -
trunk/Source/WebCore/html/track/TextTrack.h
r166022 r167025 95 95 virtual void setKind(const AtomicString&) override; 96 96 97 virtual AtomicString inBandMetadataTrackDispatchType() const { return emptyString(); } 98 97 99 AtomicString mode() const { return m_mode; } 98 100 virtual void setMode(const AtomicString&); -
trunk/Source/WebCore/html/track/TextTrack.idl
r166180 r167025 38 38 readonly attribute DOMString label; 39 39 [CustomSetter] attribute DOMString language; 40 readonly attribute DOMString inBandMetadataTrackDispatchType; 40 41 41 42 attribute TextTrackMode mode; -
trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivate.h
r165676 r167025 36 36 public: 37 37 enum CueFormat { 38 Data, 38 39 Generic, 39 40 WebVTT … … 72 73 virtual AtomicString language() const { return emptyAtom; } 73 74 virtual AtomicString id() const { return emptyAtom; } 75 virtual AtomicString inBandMetadataTrackDispatchType() const { return emptyAtom; } 74 76 75 77 virtual int textTrackIndex() const { return 0; } -
trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h
r165676 r167025 135 135 virtual ~InbandTextTrackPrivateClient() { } 136 136 137 virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, const void*, unsigned) = 0; 138 137 139 virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) = 0; 138 140 virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0; -
trunk/Source/WebCore/platform/graphics/gstreamer/InbandMetadataTextTrackPrivateGStreamer.h
r162139 r167025 36 36 class InbandMetadataTextTrackPrivateGStreamer : public InbandTextTrackPrivate { 37 37 public: 38 static PassRefPtr<InbandMetadataTextTrackPrivateGStreamer> create(Kind kind )38 static PassRefPtr<InbandMetadataTextTrackPrivateGStreamer> create(Kind kind, CueFormat cueFormat, const AtomicString& id = emptyAtom) 39 39 { 40 return adoptRef(new InbandMetadataTextTrackPrivateGStreamer(kind ));40 return adoptRef(new InbandMetadataTextTrackPrivateGStreamer(kind, cueFormat, id)); 41 41 } 42 42 … … 44 44 45 45 virtual Kind kind() const override { return m_kind; } 46 virtual AtomicString id() const override { return m_id; } 47 virtual AtomicString inBandMetadataTrackDispatchType() const override { return m_inBandMetadataTrackDispatchType; } 48 void setInBandMetadataTrackDispatchType(const AtomicString& value) { m_inBandMetadataTrackDispatchType = value; } 49 50 void addDataCue(double start, double end, const void* data, unsigned length) 51 { 52 ASSERT(cueFormat() == Data); 53 client()->addDataCue(this, start, end, data, length); 54 } 55 56 void addGenericCue(PassRefPtr<GenericCueData> data) 57 { 58 ASSERT(cueFormat() == Generic); 59 client()->addGenericCue(this, data); 60 } 46 61 47 62 private: 48 InbandMetadataTextTrackPrivateGStreamer(Kind kind )49 : InbandTextTrackPrivate( Generic)63 InbandMetadataTextTrackPrivateGStreamer(Kind kind, CueFormat cueFormat, const AtomicString& id) 64 : InbandTextTrackPrivate(cueFormat) 50 65 , m_kind(kind) 66 , m_id(id) 51 67 { 52 68 … … 54 70 55 71 Kind m_kind; 72 AtomicString m_id; 73 AtomicString m_inBandMetadataTrackDispatchType; 56 74 }; 57 75 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r166643 r167025 5 5 * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org> 6 6 * Copyright (C) 2009, 2010, 2011, 2012, 2013 Igalia S.L 7 * Copyright (C) 2014 Cable Television Laboratories, Inc. 7 8 * 8 9 * This library is free software; you can redistribute it and/or … … 38 39 #include <gst/pbutils/missing-plugins.h> 39 40 #include <limits> 41 #include <wtf/HexNumber.h> 40 42 #include <wtf/gobject/GUniquePtr.h> 41 43 #include <wtf/text/CString.h> … … 50 52 #endif 51 53 54 #if ENABLE(VIDEO_TRACK) && USE(GSTREAMER_MPEGTS) 55 #define GST_USE_UNSTABLE_API 56 #include <gst/mpegts/mpegts.h> 57 #undef GST_USE_UNSTABLE_API 58 #endif 52 59 #include <gst/audio/streamvolume.h> 53 60 … … 972 979 g_free(detail); 973 980 } 981 #if ENABLE(VIDEO_TRACK) && USE(GSTREAMER_MPEGTS) 982 else { 983 GstMpegTsSection* section = gst_message_parse_mpegts_section(message); 984 if (section) { 985 processMpegTsSection(section); 986 gst_mpegts_section_unref(section); 987 } 988 } 989 #endif 974 990 break; 975 991 #if ENABLE(VIDEO_TRACK) … … 1006 1022 } 1007 1023 1024 #if ENABLE(VIDEO_TRACK) && USE(GSTREAMER_MPEGTS) 1025 void MediaPlayerPrivateGStreamer::processMpegTsSection(GstMpegTsSection* section) 1026 { 1027 ASSERT(section); 1028 1029 if (section->section_type == GST_MPEGTS_SECTION_PMT) { 1030 const GstMpegTsPMT* pmt = gst_mpegts_section_get_pmt(section); 1031 m_metadataTracks.clear(); 1032 for (guint i = 0; i < pmt->streams->len; ++i) { 1033 const GstMpegTsPMTStream* stream = static_cast<const GstMpegTsPMTStream*>(g_ptr_array_index(pmt->streams, i)); 1034 if (stream->stream_type == 0x05 || stream->stream_type >= 0x80) { 1035 AtomicString pid = String::number(stream->pid); 1036 RefPtr<InbandMetadataTextTrackPrivateGStreamer> track = InbandMetadataTextTrackPrivateGStreamer::create( 1037 InbandTextTrackPrivate::Metadata, InbandTextTrackPrivate::Data, pid); 1038 1039 // 4.7.10.12.2 Sourcing in-band text tracks 1040 // If the new text track's kind is metadata, then set the text track in-band metadata track dispatch 1041 // type as follows, based on the type of the media resource: 1042 // Let stream type be the value of the "stream_type" field describing the text track's type in the 1043 // file's program map section, interpreted as an 8-bit unsigned integer. Let length be the value of 1044 // the "ES_info_length" field for the track in the same part of the program map section, interpreted 1045 // as an integer as defined by the MPEG-2 specification. Let descriptor bytes be the length bytes 1046 // following the "ES_info_length" field. The text track in-band metadata track dispatch type must be 1047 // set to the concatenation of the stream type byte and the zero or more descriptor bytes bytes, 1048 // expressed in hexadecimal using uppercase ASCII hex digits. 1049 String inbandMetadataTrackDispatchType; 1050 appendUnsignedAsHexFixedSize(stream->stream_type, inbandMetadataTrackDispatchType, 2); 1051 for (guint j = 0; j < stream->descriptors->len; ++j) { 1052 const GstMpegTsDescriptor* descriptor = static_cast<const GstMpegTsDescriptor*>(g_ptr_array_index(stream->descriptors, j)); 1053 for (guint k = 0; k < descriptor->length; ++k) 1054 appendByteAsHex(descriptor->data[k], inbandMetadataTrackDispatchType); 1055 } 1056 track->setInBandMetadataTrackDispatchType(inbandMetadataTrackDispatchType); 1057 1058 m_metadataTracks.add(pid, track); 1059 m_player->addTextTrack(track); 1060 } 1061 } 1062 } else { 1063 AtomicString pid = String::number(section->pid); 1064 RefPtr<InbandMetadataTextTrackPrivateGStreamer> track = m_metadataTracks.get(pid); 1065 if (!track) 1066 return; 1067 1068 GRefPtr<GBytes> data = gst_mpegts_section_get_data(section); 1069 gsize size; 1070 const void* bytes = g_bytes_get_data(data.get(), &size); 1071 1072 track->addDataCue(currentTimeDouble(), currentTimeDouble(), bytes, size); 1073 } 1074 } 1075 #endif 1076 1008 1077 #if ENABLE(VIDEO_TRACK) 1009 1078 void MediaPlayerPrivateGStreamer::processTableOfContents(GstMessage* message) … … 1012 1081 m_player->removeTextTrack(m_chaptersTrack); 1013 1082 1014 m_chaptersTrack = InbandMetadataTextTrackPrivateGStreamer::create(InbandTextTrackPrivate::Chapters );1083 m_chaptersTrack = InbandMetadataTextTrackPrivateGStreamer::create(InbandTextTrackPrivate::Chapters, InbandTextTrackPrivate::Generic); 1015 1084 m_player->addTextTrack(m_chaptersTrack); 1016 1085 … … 1048 1117 } 1049 1118 1050 m_chaptersTrack-> client()->addGenericCue(m_chaptersTrack.get(),cue.release());1119 m_chaptersTrack->addGenericCue(cue.release()); 1051 1120 1052 1121 for (GList* i = gst_toc_entry_get_sub_entries(entry); i; i = i->next) -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
r166496 r167025 4 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> 5 5 * Copyright (C) 2009, 2010 Igalia S.L 6 * Copyright (C) 2014 Cable Television Laboratories, Inc. 6 7 * 7 8 * This library is free software; you can redistribute it and/or … … 42 43 typedef struct _GstMessage GstMessage; 43 44 typedef struct _GstElement GstElement; 45 typedef struct _GstMpegTsSection GstMpegTsSection; 44 46 45 47 namespace WebCore { 46 48 47 49 class AudioTrackPrivateGStreamer; 50 class InbandMetadataTextTrackPrivateGStreamer; 48 51 class InbandTextTrackPrivateGStreamer; 49 52 class VideoTrackPrivateGStreamer; … … 144 147 void setDownloadBuffering(); 145 148 void processBufferingStats(GstMessage*); 149 #if ENABLE(VIDEO_TRACK) && USE(GSTREAMER_MPEGTS) 150 void processMpegTsSection(GstMpegTsSection*); 151 #endif 146 152 #if ENABLE(VIDEO_TRACK) 147 153 void processTableOfContents(GstMessage*); … … 206 212 Vector<RefPtr<InbandTextTrackPrivateGStreamer>> m_textTracks; 207 213 Vector<RefPtr<VideoTrackPrivateGStreamer>> m_videoTracks; 208 RefPtr<InbandTextTrackPrivate> m_chaptersTrack; 214 RefPtr<InbandMetadataTextTrackPrivateGStreamer> m_chaptersTrack; 215 #endif 216 #if ENABLE(VIDEO_TRACK) && USE(GSTREAMER_MPEGTS) 217 HashMap<AtomicString, RefPtr<InbandMetadataTextTrackPrivateGStreamer>> m_metadataTracks; 209 218 #endif 210 219 #if ENABLE(MEDIA_SOURCE) -
trunk/Source/cmake/FindGStreamer.cmake
r165763 r167025 20 20 # gstreamer-audio: GSTREAMER_AUDIO_INCLUDE_DIRS and GSTREAMER_AUDIO_LIBRARIES 21 21 # gstreamer-fft: GSTREAMER_FFT_INCLUDE_DIRS and GSTREAMER_FFT_LIBRARIES 22 # gstreamer-mpegts: GSTREAMER_MPEGTS_INCLUDE_DIRS and GSTREAMER_MPEGTS_LIBRARIES 22 23 # gstreamer-pbutils: GSTREAMER_PBUTILS_INCLUDE_DIRS and GSTREAMER_PBUTILS_LIBRARIES 23 24 # gstreamer-tag: GSTREAMER_TAG_INCLUDE_DIRS and GSTREAMER_TAG_LIBRARIES … … 106 107 FIND_GSTREAMER_COMPONENT(GSTREAMER_AUDIO gstreamer-audio-1.0 gst/audio/audio.h gstaudio-1.0) 107 108 FIND_GSTREAMER_COMPONENT(GSTREAMER_FFT gstreamer-fft-1.0 gst/fft/gstfft.h gstfft-1.0) 109 FIND_GSTREAMER_COMPONENT(GSTREAMER_MPEGTS gstreamer-mpegts-1.0>=1.3.0 gst/mpegts/mpegts.h gstmpegts-1.0) 108 110 FIND_GSTREAMER_COMPONENT(GSTREAMER_PBUTILS gstreamer-pbutils-1.0 gst/pbutils/pbutils.h gstpbutils-1.0) 109 111 FIND_GSTREAMER_COMPONENT(GSTREAMER_TAG gstreamer-tag-1.0 gst/tag/tag.h gsttag-1.0) … … 137 139 GSTREAMER_INCLUDE_DIRS 138 140 GSTREAMER_LIBRARIES 141 GSTREAMER_MPEGTS_INCLUDE_DIRS 142 GSTREAMER_MPEGTS_LIBRARIES 139 143 GSTREAMER_PBUTILS_INCLUDE_DIRS 140 144 GSTREAMER_PBUTILS_LIBRARIES -
trunk/Source/cmake/OptionsEfl.cmake
r166872 r167025 177 177 178 178 if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO) 179 set(GSTREAMER_COMPONENTS app pbutils)179 set(GSTREAMER_COMPONENTS app mpegts pbutils) 180 180 set(WTF_USE_GSTREAMER 1) 181 181 add_definitions(-DWTF_USE_GSTREAMER=1) … … 191 191 192 192 find_package(GStreamer 1.0.5 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS}) 193 194 if (PC_GSTREAMER_MPEGTS_FOUND) 195 add_definitions(-DWTF_USE_GSTREAMER_MPEGTS) 196 set(USE_GSTREAMER_MPEGTS TRUE) 197 endif () 193 198 endif () 194 199 -
trunk/Source/cmake/OptionsGTK.cmake
r166979 r167025 138 138 add_definitions(-DWTF_USE_GSTREAMER) 139 139 if (ENABLE_VIDEO) 140 list(APPEND GSTREAMER_COMPONENTS video tag)140 list(APPEND GSTREAMER_COMPONENTS video mpegts tag) 141 141 endif () 142 142 … … 147 147 148 148 find_package(GStreamer 1.0.3 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS}) 149 150 if (PC_GSTREAMER_MPEGTS_FOUND) 151 add_definitions(-DWTF_USE_GSTREAMER_MPEGTS) 152 set(USE_GSTREAMER_MPEGTS TRUE) 153 endif () 149 154 endif () 150 155
Note: See TracChangeset
for help on using the changeset viewer.