I'm not sure exactly how SkPicture recording works - please join
https://groups.google.com/a/chromium.org/g/graphics-dev and email
graphics-...@chromium.org .

-Ken



On Sat, May 4, 2024 at 6:21 AM Steven Whelan <stevenwhela...@gmail.com>
wrote:

> Hi I am able to write the serialized SKData (captured from Serialize
> method of  paint_op_buffer_serializer
> <https://source.chromium.org/chromium/chromium/src/+/main:cc/paint/paint_op_buffer_serializer.cc;l=5;bpv=1;bpt=1?q=paint_op_buffer_serializer&ss=chromium%2Fchromium%2Fsrc>
>  as
> shown in the first mail) to a file and was also able to use this file for
> playback on canvas.
> However, it only played back the text. How do I ensure that images also
> get captured in my SKPicture recording? Do I have to have multiple
> SKPictureRecording at multiple places?
> Goal : To record everything being written on a canvas while loading  a
> page so that it can be played back on another browser.
>
> Thanks
>
>
>
>
> On Thursday, May 2, 2024 at 5:34:48 AM UTC+5:30 k...@chromium.org wrote:
>
>> Yes - you can confirm this yourself - but we strongly recommend against
>> disabling the renderer sandbox.
>>
>>
>> On Tue, Apr 30, 2024 at 10:46 PM Steven Whelan <stevenw...@gmail.com>
>> wrote:
>>
>>> Yes, trying to do this in renderer process. Would it work if I run
>>> Chromium with --nosandbox flag.
>>>
>>> On Tue, Apr 30, 2024, 21:58 Ken Russell <k...@chromium.org> wrote:
>>>
>>>> Are you trying to do this within Chrome's renderer or GPU processes? If
>>>> so, the sandbox will prevent you from touching the local disk. You would
>>>> need to extend the sandbox policies to allow writing to a directory on disk
>>>> - some place that will not collide with other programs, so that if a bad
>>>> actor causes data to be written to that directory, no harm will be caused.
>>>> See
>>>> https://source.chromium.org/chromium/chromium/src/+/main:sandbox/policy/mac/
>>>> for the macOS sandbox policies.
>>>>
>>>> -Ken
>>>>
>>>>
>>>>
>>>> On Tue, Apr 30, 2024 at 8:59 AM Steven Whelan <stevenw...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hi
>>>>> I have modified the Serialize
>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:cc/paint/paint_op_buffer_serializer.cc;l=5;bpv=1;bpt=1?q=paint_op_buffer_ser&ss=chromium%2Fchromium%2Fsrc>
>>>>>  method
>>>>> to Record all PaintOp as SKPicture.
>>>>> I want to replay this SKPicture on a remote browser. So, I am trying
>>>>> to save this SKPicture to a file, but I am not able to do so, since
>>>>> file.isOpen gives false.
>>>>> Please help here
>>>>>
>>>>> void PaintOpBufferSerializer::Serialize(const PaintOpBuffer& buffer,
>>>>>                                         const std::vector<size_t>*
>>>>> offsets,
>>>>>                                         const Preamble& preamble) {
>>>>>   DCHECK_EQ(serialized_op_count_, 0u);
>>>>>
>>>>>   std::unique_ptr<SkCanvas> canvas = MakeAnalysisCanvas(options_);
>>>>>   // These PlaybackParams use the initial (identity) canvas matrix, as
>>>>> they are
>>>>>   // only used for serializing the preamble and the initial save /
>>>>> final restore
>>>>>   // SerializeBuffer will create its own PlaybackParams based on the
>>>>>
>>>>>  * SkPictureRecorder recorder;*
>>>>>  * SkCanvas* recordingCanvas =
>>>>> recorder.beginRecording(canvas->getLocalClipBounds());         *
>>>>>   // post-preamble canvas.
>>>>>   PlaybackParams params = MakeParams(canvas.get());
>>>>>   int save_count = canvas->getSaveCount();
>>>>>   Save(canvas.get(), params);
>>>>>   SerializePreamble(canvas.get(), preamble, params);
>>>>>   SerializeBuffer(canvas.get(), buffer, offsets);
>>>>>   *SerializeBuffer(recordingCanvas, buffer, offsets);*
>>>>>
>>>>>
>>>>> *sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
>>>>> SkSerialProcs sProcs;  sk_sp<SkData> readableData =
>>>>> picture->serialize(&sProcs);*
>>>>>   // Assuming the byte array is stored in the 'data' field of the
>>>>> SkData object
>>>>>   const void* data = readableData->data();
>>>>>   size_t size = readableData->size();
>>>>>
>>>>> * <HOW TO SAVE READABLE DATA TO A FILE>*
>>>>>   /*sk_sp<SkData> receievedData = SkData::MakeWithoutCopy(data, size);
>>>>>   sk_sp<SkPicture> copy =
>>>>>       SkPicture::MakeFromData(receievedData->data(),
>>>>> receievedData->size());
>>>>>   copy->playback(recordingCanvas);*/
>>>>>   RestoreToCount(canvas.get(), save_count, params);
>>>>> }
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "blink-dev" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to blink-dev+...@chromium.org.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/97946d8b-27dc-43c4-a262-e4f6288be9d6n%40chromium.org
>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/97946d8b-27dc-43c4-a262-e4f6288be9d6n%40chromium.org?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMYvS2ct9gBRQCuk%3DW0kUveoXJKNyW7mxzEp-PEY1F0aMB1aCw%40mail.gmail.com.

Reply via email to