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.