Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/guacamole-server/pull/159#discussion_r173687945
  
    --- Diff: src/guacenc/ffmpeg-compat.c ---
    @@ -51,8 +51,41 @@
      */
     static int guacenc_write_packet(guacenc_video* video, void* data, int 
size) {
     
    -    /* Write data, logging any errors */
    -    if (fwrite(data, 1, size, video->output) == 0) {
    +    int ret;
    +    AVPacket *pkt;
    +
    +
    +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54,1,0)
    +
    +    pkt =  malloc(sizeof(AVPacket));
    +    /* have to create a packet around the encoded data we have */
    +    av_init_packet(pkt);
    +
    +    if (video->context->coded_frame->pts != AV_NOPTS_VALUE) {
    +        pkt->pts = av_rescale_q(video->context->coded_frame->pts,
    +                video->context->time_base,
    +                video->output_stream->time_base);
    +    }
    +    if (video->context->coded_frame->key_frame) {
    +        pkt->flags |= AV_PKT_FLAG_KEY;
    +    }
    +
    +    pkt->data = data;
    +    pkt->size = size;
    +    pkt->stream_index = video->output_stream->index;
    +    ret = av_interleaved_write_frame(video->container_format_context, pkt);
    +    free(pkt);
    --- End diff --
    
    Why dynamically allocate an `AVPacket` only to immediately free it after 
use?


---

Reply via email to