Re: [FFmpeg-devel] [PATCH v2 3/3] lavc/libdavs2: correct frame type setting

2018-10-31 Thread Huiwen Ren









At 2018-11-01 08:40:50, "Carl Eugen Hoyos"  wrote:
>2018-10-31 23:15 GMT+01:00, Mark Thompson :
>> On 31/10/18 10:23, hwren wrote:
>
>>> +switch (pic->type) {
>>> +case DAVS2_PIC_I:
>>> +frame->pict_type = AV_PICTURE_TYPE_I;
>>> +break;
>>> +case DAVS2_PIC_P:
>>> +frame->pict_type = AV_PICTURE_TYPE_P;
>>> +break;
>>> +case DAVS2_PIC_B:
>>> +case DAVS2_PIC_F:
>>> +frame->pict_type = AV_PICTURE_TYPE_B;
>>> +break;
>>> +default:
>>> +frame->pict_type = AV_PICTURE_TYPE_NONE;
>>
>> Are there any types which aren't already handled?  If there aren't
>> then this would probably be better as an assert.
>
>Since this is an external library, an assert would be wrong.
>
>I wanted to suggest an error message or a negative return value.

Actually, there are six types of frames defined by AVS2 standard: 

DAVS2_PIC_I , DAVS2_PIC_P, DAVS2_PIC_B
DAVS2_PIC_G, DAVS2_PIC_F ,DAVS2_PIC_S
(the DAVS2_PIC_S is not exactly the same thing as AV_PICTURE_TYPE_S)

While in this patch I may make a wrong classification. Every frame in davs2 has 
its same/similar type in ffmpeg.
So maybe it's better to set the  unhandled-type to an error assert.

Thanks :-)

>
>Carl Eugen
>___
>ffmpeg-devel mailing list
>ffmpeg-devel@ffmpeg.org
>http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v2 3/3] lavc/libdavs2: correct frame type setting

2018-10-31 Thread Carl Eugen Hoyos
2018-10-31 23:15 GMT+01:00, Mark Thompson :
> On 31/10/18 10:23, hwren wrote:

>> +switch (pic->type) {
>> +case DAVS2_PIC_I:
>> +frame->pict_type = AV_PICTURE_TYPE_I;
>> +break;
>> +case DAVS2_PIC_P:
>> +frame->pict_type = AV_PICTURE_TYPE_P;
>> +break;
>> +case DAVS2_PIC_B:
>> +case DAVS2_PIC_F:
>> +frame->pict_type = AV_PICTURE_TYPE_B;
>> +break;
>> +default:
>> +frame->pict_type = AV_PICTURE_TYPE_NONE;
>
> Are there any types which aren't already handled?  If there aren't
> then this would probably be better as an assert.

Since this is an external library, an assert would be wrong.

I wanted to suggest an error message or a negative return value.

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v2 3/3] lavc/libdavs2: correct frame type setting

2018-10-31 Thread Mark Thompson
On 31/10/18 10:23, hwren wrote:
> Signed-off-by: hwren 
> ---
>  libavcodec/libdavs2.c | 17 -
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/libdavs2.c b/libavcodec/libdavs2.c
> index a1815d2..d7bcaa3 100644
> --- a/libavcodec/libdavs2.c
> +++ b/libavcodec/libdavs2.c
> @@ -94,11 +94,26 @@ static int davs2_dump_frames(AVCodecContext *avctx, 
> davs2_picture_t *pic,
> pic->widths[plane] * bytes_per_sample);
>  }
>  
> +switch (pic->type) {
> +case DAVS2_PIC_I:
> +frame->pict_type = AV_PICTURE_TYPE_I;
> +break;
> +case DAVS2_PIC_P:
> +frame->pict_type = AV_PICTURE_TYPE_P;
> +break;
> +case DAVS2_PIC_B:
> +case DAVS2_PIC_F:
> +frame->pict_type = AV_PICTURE_TYPE_B;
> +break;
> +default:
> +frame->pict_type = AV_PICTURE_TYPE_NONE;

Are there any types which aren't already handled?  If there aren't then this 
would probably be better as an assert.

> +}
> +
>  frame->width = cad->headerset.width;
>  frame->height= cad->headerset.height;
>  frame->pts   = cad->out_frame.pts;
> -frame->pict_type = pic->type;
>  frame->format= avctx->pix_fmt;
> +frame->key_frame = pic->type == DAVS2_PIC_I ? 1 : 0;

Is an I frame in AVS2 necessarily a random access point?  (That is, not like an 
I frame in H.264, instead like an IDR frame - it clears the DPB so no previous 
reference frames can be carried across it.)

>  
>  return 1;
>  }
> 

Thanks

- Mark
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v2 3/3] lavc/libdavs2: correct frame type setting

2018-10-31 Thread Carl Eugen Hoyos
2018-10-31 11:23 GMT+01:00, hwren :
> Signed-off-by: hwren 
> ---
>  libavcodec/libdavs2.c | 17 -
>  1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/libdavs2.c b/libavcodec/libdavs2.c
> index a1815d2..d7bcaa3 100644
> --- a/libavcodec/libdavs2.c
> +++ b/libavcodec/libdavs2.c
> @@ -94,11 +94,26 @@ static int davs2_dump_frames(AVCodecContext *avctx,
> davs2_picture_t *pic,
> pic->widths[plane] * bytes_per_sample);
>  }
>
> +switch (pic->type) {
> +case DAVS2_PIC_I:
> +frame->pict_type = AV_PICTURE_TYPE_I;
> +break;
> +case DAVS2_PIC_P:
> +frame->pict_type = AV_PICTURE_TYPE_P;
> +break;
> +case DAVS2_PIC_B:
> +case DAVS2_PIC_F:
> +frame->pict_type = AV_PICTURE_TYPE_B;
> +break;

> +default:
> +frame->pict_type = AV_PICTURE_TYPE_NONE;

What other DAVS2_PIC values exist?

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH v2 3/3] lavc/libdavs2: correct frame type setting

2018-10-31 Thread hwren
Signed-off-by: hwren 
---
 libavcodec/libdavs2.c | 17 -
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/libavcodec/libdavs2.c b/libavcodec/libdavs2.c
index a1815d2..d7bcaa3 100644
--- a/libavcodec/libdavs2.c
+++ b/libavcodec/libdavs2.c
@@ -94,11 +94,26 @@ static int davs2_dump_frames(AVCodecContext *avctx, 
davs2_picture_t *pic,
pic->widths[plane] * bytes_per_sample);
 }
 
+switch (pic->type) {
+case DAVS2_PIC_I:
+frame->pict_type = AV_PICTURE_TYPE_I;
+break;
+case DAVS2_PIC_P:
+frame->pict_type = AV_PICTURE_TYPE_P;
+break;
+case DAVS2_PIC_B:
+case DAVS2_PIC_F:
+frame->pict_type = AV_PICTURE_TYPE_B;
+break;
+default:
+frame->pict_type = AV_PICTURE_TYPE_NONE;
+}
+
 frame->width = cad->headerset.width;
 frame->height= cad->headerset.height;
 frame->pts   = cad->out_frame.pts;
-frame->pict_type = pic->type;
 frame->format= avctx->pix_fmt;
+frame->key_frame = pic->type == DAVS2_PIC_I ? 1 : 0;
 
 return 1;
 }
-- 
2.7.4

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel