diff mbox

[FFmpeg-devel] avformat/mxg: return reference counted packets

Message ID 20180227030947.10268-1-jamrial@gmail.com
State Accepted
Commit 6ce5dd228c40159c774543425dd1f94a5d670542
Headers show

Commit Message

James Almer Feb. 27, 2018, 3:09 a.m. UTC
Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/mxg.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

Comments

James Almer March 2, 2018, 3:05 p.m. UTC | #1
On 2/27/2018 12:09 AM, James Almer wrote:
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  libavformat/mxg.c | 17 +++++++++++------
>  1 file changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/libavformat/mxg.c b/libavformat/mxg.c
> index 6fbf99cfa3..fe5879ecf0 100644
> --- a/libavformat/mxg.c
> +++ b/libavformat/mxg.c
> @@ -169,11 +169,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
>                      continue;
>                  }
>  
> +                size = mxg->buffer_ptr - mxg->soi_ptr;
> +                ret = av_new_packet(pkt, size);
> +                if (ret < 0)
> +                    return ret;
> +                memcpy(pkt->data, mxg->soi_ptr, size);
> +
>                  pkt->pts = pkt->dts = mxg->dts;
>                  pkt->stream_index = 0;
> -                pkt->buf  = NULL;
> -                pkt->size = mxg->buffer_ptr - mxg->soi_ptr;
> -                pkt->data = mxg->soi_ptr;
>  
>                  if (mxg->soi_ptr - mxg->buffer > mxg->cache_size) {
>                      if (mxg->cache_size > 0) {
> @@ -206,12 +209,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
>                  mxg->buffer_ptr += size;
>  
>                  if (marker == APP13 && size >= 16) { /* audio data */
> +                    ret = av_new_packet(pkt, size - 14);
> +                    if (ret < 0)
> +                        return ret;
> +                    memcpy(pkt->data, startmarker_ptr + 16, size - 14);
> +
>                      /* time (GMT) of first sample in usec since 1970, little-endian */
>                      pkt->pts = pkt->dts = AV_RL64(startmarker_ptr + 8);
>                      pkt->stream_index = 1;
> -                    pkt->buf  = NULL;
> -                    pkt->size = size - 14;
> -                    pkt->data = startmarker_ptr + 16;
>  
>                      if (startmarker_ptr - mxg->buffer > mxg->cache_size) {
>                          if (mxg->cache_size > 0) {

Ping.
wm4 March 2, 2018, 3:10 p.m. UTC | #2
On Tue, 27 Feb 2018 00:09:47 -0300
James Almer <jamrial@gmail.com> wrote:

> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  libavformat/mxg.c | 17 +++++++++++------
>  1 file changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/libavformat/mxg.c b/libavformat/mxg.c
> index 6fbf99cfa3..fe5879ecf0 100644
> --- a/libavformat/mxg.c
> +++ b/libavformat/mxg.c
> @@ -169,11 +169,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
>                      continue;
>                  }
>  
> +                size = mxg->buffer_ptr - mxg->soi_ptr;
> +                ret = av_new_packet(pkt, size);
> +                if (ret < 0)
> +                    return ret;
> +                memcpy(pkt->data, mxg->soi_ptr, size);
> +
>                  pkt->pts = pkt->dts = mxg->dts;
>                  pkt->stream_index = 0;
> -                pkt->buf  = NULL;
> -                pkt->size = mxg->buffer_ptr - mxg->soi_ptr;
> -                pkt->data = mxg->soi_ptr;
>  
>                  if (mxg->soi_ptr - mxg->buffer > mxg->cache_size) {
>                      if (mxg->cache_size > 0) {
> @@ -206,12 +209,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
>                  mxg->buffer_ptr += size;
>  
>                  if (marker == APP13 && size >= 16) { /* audio data */
> +                    ret = av_new_packet(pkt, size - 14);
> +                    if (ret < 0)
> +                        return ret;
> +                    memcpy(pkt->data, startmarker_ptr + 16, size - 14);
> +
>                      /* time (GMT) of first sample in usec since 1970, little-endian */
>                      pkt->pts = pkt->dts = AV_RL64(startmarker_ptr + 8);
>                      pkt->stream_index = 1;
> -                    pkt->buf  = NULL;
> -                    pkt->size = size - 14;
> -                    pkt->data = startmarker_ptr + 16;
>  
>                      if (startmarker_ptr - mxg->buffer > mxg->cache_size) {
>                          if (mxg->cache_size > 0) {

LGTM if FATE passes.
James Almer March 2, 2018, 4:28 p.m. UTC | #3
On 3/2/2018 12:10 PM, wm4 wrote:
> On Tue, 27 Feb 2018 00:09:47 -0300
> James Almer <jamrial@gmail.com> wrote:
> 
>> Signed-off-by: James Almer <jamrial@gmail.com>
>> ---
>>  libavformat/mxg.c | 17 +++++++++++------
>>  1 file changed, 11 insertions(+), 6 deletions(-)
>>
>> diff --git a/libavformat/mxg.c b/libavformat/mxg.c
>> index 6fbf99cfa3..fe5879ecf0 100644
>> --- a/libavformat/mxg.c
>> +++ b/libavformat/mxg.c
>> @@ -169,11 +169,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
>>                      continue;
>>                  }
>>  
>> +                size = mxg->buffer_ptr - mxg->soi_ptr;
>> +                ret = av_new_packet(pkt, size);
>> +                if (ret < 0)
>> +                    return ret;
>> +                memcpy(pkt->data, mxg->soi_ptr, size);
>> +
>>                  pkt->pts = pkt->dts = mxg->dts;
>>                  pkt->stream_index = 0;
>> -                pkt->buf  = NULL;
>> -                pkt->size = mxg->buffer_ptr - mxg->soi_ptr;
>> -                pkt->data = mxg->soi_ptr;
>>  
>>                  if (mxg->soi_ptr - mxg->buffer > mxg->cache_size) {
>>                      if (mxg->cache_size > 0) {
>> @@ -206,12 +209,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
>>                  mxg->buffer_ptr += size;
>>  
>>                  if (marker == APP13 && size >= 16) { /* audio data */
>> +                    ret = av_new_packet(pkt, size - 14);
>> +                    if (ret < 0)
>> +                        return ret;
>> +                    memcpy(pkt->data, startmarker_ptr + 16, size - 14);
>> +
>>                      /* time (GMT) of first sample in usec since 1970, little-endian */
>>                      pkt->pts = pkt->dts = AV_RL64(startmarker_ptr + 8);
>>                      pkt->stream_index = 1;
>> -                    pkt->buf  = NULL;
>> -                    pkt->size = size - 14;
>> -                    pkt->data = startmarker_ptr + 16;
>>  
>>                      if (startmarker_ptr - mxg->buffer > mxg->cache_size) {
>>                          if (mxg->cache_size > 0) {
> 
> LGTM if FATE passes.

Pushed, thanks.
diff mbox

Patch

diff --git a/libavformat/mxg.c b/libavformat/mxg.c
index 6fbf99cfa3..fe5879ecf0 100644
--- a/libavformat/mxg.c
+++ b/libavformat/mxg.c
@@ -169,11 +169,14 @@  static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
                     continue;
                 }
 
+                size = mxg->buffer_ptr - mxg->soi_ptr;
+                ret = av_new_packet(pkt, size);
+                if (ret < 0)
+                    return ret;
+                memcpy(pkt->data, mxg->soi_ptr, size);
+
                 pkt->pts = pkt->dts = mxg->dts;
                 pkt->stream_index = 0;
-                pkt->buf  = NULL;
-                pkt->size = mxg->buffer_ptr - mxg->soi_ptr;
-                pkt->data = mxg->soi_ptr;
 
                 if (mxg->soi_ptr - mxg->buffer > mxg->cache_size) {
                     if (mxg->cache_size > 0) {
@@ -206,12 +209,14 @@  static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
                 mxg->buffer_ptr += size;
 
                 if (marker == APP13 && size >= 16) { /* audio data */
+                    ret = av_new_packet(pkt, size - 14);
+                    if (ret < 0)
+                        return ret;
+                    memcpy(pkt->data, startmarker_ptr + 16, size - 14);
+
                     /* time (GMT) of first sample in usec since 1970, little-endian */
                     pkt->pts = pkt->dts = AV_RL64(startmarker_ptr + 8);
                     pkt->stream_index = 1;
-                    pkt->buf  = NULL;
-                    pkt->size = size - 14;
-                    pkt->data = startmarker_ptr + 16;
 
                     if (startmarker_ptr - mxg->buffer > mxg->cache_size) {
                         if (mxg->cache_size > 0) {