[Libva] [PATCH] va.h: Improve the comment on the encode framerate parameter

Mark Thompson sw at jkqxz.net
Thu Dec 22 18:22:00 UTC 2016


Signed-off-by: Mark Thompson <sw at jkqxz.net>
---
On 22/12/16 01:32, Xiang, Haihao wrote:
> 
>> Hmm.  Reading the comment in va/va.h again:
>>
>>     /*
>>      * fps = numerator / denominator
>>      * The high 2 bytes (bits 16 to 31) of framerate specifies the
>> numerator, and
>>      * the low 2 bytes (bits 0 to 15) of framerate specifies the
>> denominator. For
>>      * example, ((100 < 16 ) | 750) is 7.5 fps
>>      *
>>      * If the high 2 btyes is 0, the frame rate is specified by the
>> low 2 bytes.
>>      */
>>     unsigned int framerate;
>>
>> the example and the text do not agree (I was following the text and
>> didn't read the example carefully).  Looking at the previous code
>> there, apparently the example is the one which should be followed?  
> 
> It was my fault when I added the comment. Yes, we should follow the
> example, some applications have already uses the form of the example.
> BTW the example should be ((100 << 16) | 750) :( 
> 
>> If you could confirm that this is the intention and will not break
>> any other drivers, I will send a new patch to libva to fix the text
>> of the comment (and also change my code to match).
> 
> Yes, please.
> 

Enclosing patch fixes the incorrect comment, and also adds a bit more explanation to hopefully make the use clearer.

Thanks,

- Mark


 va/va.h | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/va/va.h b/va/va.h
index 8791906..a1ab4a8 100644
--- a/va/va.h
+++ b/va/va.h
@@ -1277,12 +1277,22 @@ typedef struct _VAEncMiscParameterRateControl
 typedef struct _VAEncMiscParameterFrameRate
 {
     /*
-     * fps = numerator / denominator
-     * The high 2 bytes (bits 16 to 31) of framerate specifies the numerator, and
-     * the low 2 bytes (bits 0 to 15) of framerate specifies the denominator. For
-     * example, ((100 < 16 ) | 750) is 7.5 fps
+     * The framerate is specified as a number of frames per second, as a
+     * fraction.  The denominator of the fraction is given in the top half
+     * (the high two bytes) of the framerate field, and the numerator is
+     * given in the bottom half (the low two bytes).
      *
-     * If the high 2 btyes is 0, the frame rate is specified by the low 2 bytes.
+     * That is:
+     * denominator = framerate >> 16 & 0xffff;
+     * numerator   = framerate & 0xffff;
+     * fps         = numerator / denominator;
+     *
+     * For example, if framerate is set to (100 << 16 | 750), this is
+     * 750 / 100, hence 7.5fps.
+     *
+     * If the denominator is zero (the high two bytes are both zero) then
+     * it takes the value one instead, so the framerate is just the integer
+     * in the low 2 bytes.
      */
     unsigned int framerate;
     union
-- 
2.11.0


More information about the Libva mailing list