Modified: trunk/Source/WebCore/ChangeLog (233804 => 233805)
--- trunk/Source/WebCore/ChangeLog 2018-07-13 17:46:30 UTC (rev 233804)
+++ trunk/Source/WebCore/ChangeLog 2018-07-13 18:20:03 UTC (rev 233805)
@@ -1,3 +1,17 @@
+2018-07-13 Charlie Turner <ctur...@igalia.com>
+
+ [GStreamer] Use smart pointers for GstByteReader
+ https://bugs.webkit.org/show_bug.cgi?id=187638
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ * platform/graphics/gstreamer/GUniquePtrGStreamer.h: Add
+ specialisation for GstByteReader.
+ * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
+ Use the new smart pointer class to avoid needing to remember where
+ to call gst_byte_reader_free.
+ (webKitMediaClearKeyDecryptorDecrypt):
+
2018-07-13 Basuke Suzuki <basuke.suz...@sony.com>
[Curl] Move HTTP Setup logic from CurlRequest to CurlHandle for reuse.
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/GUniquePtrGStreamer.h (233804 => 233805)
--- trunk/Source/WebCore/platform/graphics/gstreamer/GUniquePtrGStreamer.h 2018-07-13 17:46:30 UTC (rev 233804)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/GUniquePtrGStreamer.h 2018-07-13 18:20:03 UTC (rev 233805)
@@ -21,6 +21,7 @@
#define GUniquePtrGStreamer_h
#if USE(GSTREAMER)
+#include <gst/base/gstbytereader.h>
#include <gst/base/gstflowcombiner.h>
#include <gst/gstsegment.h>
#include <gst/gststructure.h>
@@ -33,6 +34,7 @@
WTF_DEFINE_GPTR_DELETER(GstInstallPluginsContext, gst_install_plugins_context_free)
WTF_DEFINE_GPTR_DELETER(GstSegment, gst_segment_free)
WTF_DEFINE_GPTR_DELETER(GstFlowCombiner, gst_flow_combiner_free)
+WTF_DEFINE_GPTR_DELETER(GstByteReader, gst_byte_reader_free)
}
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp (233804 => 233805)
--- trunk/Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp 2018-07-13 17:46:30 UTC (rev 233804)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp 2018-07-13 18:20:03 UTC (rev 233805)
@@ -241,7 +241,6 @@
return false;
}
- GstByteReader* reader;
unsigned position = 0;
unsigned sampleIndex = 0;
@@ -273,7 +272,7 @@
return false;
}
- reader = gst_byte_reader_new(mappedSubSamplesBuffer.data(), mappedSubSamplesBuffer.size());
+ GUniquePtr<GstByteReader> reader(gst_byte_reader_new(mappedSubSamplesBuffer.data(), mappedSubSamplesBuffer.size()));
GST_DEBUG_OBJECT(self, "position: %d, size: %zu", position, mappedBuffer.size());
while (position < mappedBuffer.size()) {
@@ -281,10 +280,9 @@
guint32 nBytesEncrypted = 0;
if (sampleIndex < subSampleCount) {
- if (!gst_byte_reader_get_uint16_be(reader, &nBytesClear)
- || !gst_byte_reader_get_uint32_be(reader, &nBytesEncrypted)) {
+ if (!gst_byte_reader_get_uint16_be(reader.get(), &nBytesClear)
+ || !gst_byte_reader_get_uint32_be(reader.get(), &nBytesEncrypted)) {
GST_DEBUG_OBJECT(self, "unsupported");
- gst_byte_reader_free(reader);
return false;
}
sampleIndex++;
@@ -300,7 +298,6 @@
cipherError = gcry_cipher_decrypt(priv->handle, mappedBuffer.data() + position, nBytesEncrypted, 0, 0);
if (cipherError) {
GST_ERROR_OBJECT(self, "sub sample index %u decryption failed: %s", sampleIndex, gpg_strerror(cipherError));
- gst_byte_reader_free(reader);
return false;
}
position += nBytesEncrypted;
@@ -307,7 +304,6 @@
}
}
- gst_byte_reader_free(reader);
return true;
}