<div dir="ltr">Hi Sean.<br><div><div class="gmail_extra"><br></div><div class="gmail_extra">See commets inline.<br><br></div><div class="gmail_extra"><div class="gmail_quote">On Mon, Sep 26, 2016 at 6:50 PM, Sean <span dir="ltr"><<a href="mailto:csosmo@hotmail.com" target="_blank">csosmo@hotmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi, Peter,<br>
Thanks for pointing out the "byte-ordering" of RGBA in Gstreamer. However,<br>
if we don't care the performance and only care the correctness. I think the<br>
following implement should work in myelement (i. e. writing the 4th byte of<br>
each pixel):<span class="gmail-"><br>
<br>
    for (int i  = 0; i < 240; i++) {<br>
      for (int j = 0; j < 640; j++)<br>
</span>      info.data[(i*640+j)*4-1] = 0x0;<br>
    }<br></blockquote><div><br></div><div>Not quite. When i and j are 0, you get info.data[-1].<br></div><div>Furthermore I don't know the type of info.data. If it not a byte array, you  will get it terribly wrong. So something like this:<br><br></div><div>  u_int8_t* p = ((u_int8_t*)&info.data[0])+3;<br></div><div>  for (int i = 0; i < 240 ; i++) {<br></div><div>    for (int j = 0 ; j < 640 ; j++) {<br></div><div>      *p = 0x0;<br></div><div>      p += 4;<br>    }<br>  }<br><br></div><div>  If that doesn't work, then maybe the format in info.data isn't RGBA byte-order. Then you could try add 0, 1 or 2 until it worked. That would tell you here the alpha is placed.<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
However, the result is the same (i.e. the pixel at (row,col)=(0,4), (0,8)<br>
(0,12)...... become a GREEN pixel). Is it related to the "stride" value? If<br>
yes, how would I get stride information? I checked "GstMapInfo" which<br>
doesn't have stride information?<br></blockquote><div><br></div><div>Setting something to 0 should not produce green. However you have not explained how you get to see the pixel is green. So how do you get to see that. Maybe you should show your working pipeline for testing this. Are you determining that you see green after encoding it and then displaying it using a player? So what is your pipeline and how do you see it is green? You can not reliably test a pixel value by sending it through an encoder.<br><br></div><div>If I slightly modify your pipeline to this moving the videoconvert and specifying I420 for input to x264enc:<br><br>  gst_launch -v videotestsrc ! video/x-raw,format=RGBA,width=<wbr>640, height=480 ! myelement ! videoconvert ! video/x-raw,format=I420 ! x264enc ! mpegtsmux ! filesink location=test.ts<br><br></div><div>Then what would you expect to see?  What would you expect a RGB pixel with alpha set to zero to be converted and encoded as? Again you can not test a pixel value reliably by sending it through an encoder.<br><br></div><div>By the way your original example pipeline would convert video from RGBA to YUV 4:4:4 <b>BEFORE</b> entering you element. And YUV 4:4:4 is definitely not RGBA. So your green might very well be a result and indicator of an invalid YUV value. Not all 2^24 possible YUV values are valid.<br><br></div><div>The stride value is the number of bytes between the first pixel in row 0 and the first pixel in row 1. If the format is RGBA, then the stride value is 4 times the width. If is 24 bit RGB, then it is 3 times the width unless it is RGB in 32 bit.</div><div><br></div><div><b>However</b> the stride I used in my example was the number of bytes between the last pixel in first row you wanted to apply a zero alpha value to and the first pixel in the next row you wanted to apply the zero alpha setting to. If you wanted to apply zero alpha to all pixels in first and second row up to some number, then stride would be zero. I just provided code for the general example and if you for a specific subset set startcol=1 and endcol=640, then it will also work. <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Thanks.<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/Set-partial-pixel-to-be-transparent-in-video-tp4679769p4679799.html" rel="noreferrer" target="_blank">http://gstreamer-devel.966125.<wbr>n4.nabble.com/Set-partial-<wbr>pixel-to-be-transparent-in-<wbr>video-tp4679769p4679799.html</a><br>
<div class="gmail-HOEnZb"><div class="gmail-h5">Sent from the GStreamer-devel mailing list archive at Nabble.com.<br>
______________________________<wbr>_________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.<wbr>freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/gstreamer-<wbr>devel</a><br>
</div></div></blockquote></div><br></div></div></div>