Re: [osg-users] Video display problem on Andoid

2013-07-25 Thread Jordi Torres
Hi Koduri,

You are not assigning texture coordinates to your Quad, so I guess this
texture coordinates are by default. Apply your own texture coordinates, I
did something like this, but this was local to my application:

osg::ref_ptr quad = osg::createTexturedQuadGeometry(
osg::Vec3(0.0f, 0.0f, 0.0f), osg::Vec3(0.5f, 0.0f, 0.0f),
osg::Vec3(0.0f, 0.0f, 0.5f),0,1,1,0 );


The full code, take what you want:

osg::ref_ptr image = osgDB::readImageFile(
"/sdcard/videodemo256256.avi.ffmpeg" );
osg::ImageStream* imageStream = dynamic_cast(
image.get() );
if ( imageStream )
{
 imageStream->play();
}
osg::ref_ptr texture = new osg::Texture2D;
texture->setImage( image.get() );

osg::ref_ptr quad = osg::createTexturedQuadGeometry(
osg::Vec3(0.0f, 0.0f, 0.0f), osg::Vec3(0.5f, 0.0f, 0.0f),
osg::Vec3(0.0f, 0.0f, 0.5f),0,1,1,0 );
quad->getOrCreateStateSet()->setTextureAttributeAndModes( 0,
texture.get() );
quad->getOrCreateStateSet()->setMode(GL_LIGHTING,
osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
osg::ref_ptr geode = new osg::Geode;
geode->addDrawable( quad.get() );
osg::Matrix M = osg::Matrix::rotate(osg::inDegrees(-90.0f),
osg::X_AXIS)* osg::Matrix::translate(-0.25f, -0.25f, 0);

// Use matrix M with, for example, an osg::MatrixTransform to transform its
child nodes
osg::ref_ptr mt = new osg::MatrixTransform(M);
mt->addChild(geode);




2013/7/25 Koduri Lakshmi 

> Hi,
>
> I am trying to play the video on android device.  I did the coding as
> follows.
>
> in ".H" file.
>
>
> Code:
> osg::ref_ptr geode;
> osg::ref_ptr mVideoTexture;
> osg::Image* img;
> osg::ref_ptr videoStream[2];
> osg::ref_ptr mtForMarker[2];
> osg::ref_ptr modelSwitch;
>
>
>
>
> In ".CPP" file
>
>
> Code:
> int idx=0;
> img = osgDB::readImageFile("1.mp4.mpeg");
> videoStream[idx] = dynamic_cast(img);
> if (videoStream[idx].valid())
> {
> LOG( "Got movie");
> videoStream[idx]->setLoopingMode(
> osg::ImageStream::NO_LOOPING);
> videoStream[idx]->seek(0);
> videoStream[idx]->play();
> }
> else
>{
>   LOG( "No movie!");
>}
> aspectRatio = (float)img->t() / (float)img->s();
>  videoWidth = img->s();
>  videoHeight =videoWidth * aspectRatio;
>
>  mVideoTexture = new osg::Texture2D;
>  geode = new osg::Geode;
>  mVideoTexture->setImage( videoStream[idx].get() );
>
>  geode->addDrawable(osg::createTexturedQuadGeometry(
>  osg::Vec3(0.0f, 0.0f, 0.0f),
>  osg::Vec3(videoWidth, 0.0f, 0.0f),
>  osg::Vec3(0.0f, 0.0f, videoHeight)
>
>  ));
> geode->getOrCreateStateSet()->setTextureAttributeAndModes(0,
> mVideoTexture, osg::StateAttribute::ON );
>
> mtForMarker[idx] = new osg::MatrixTransform();
> mtForMarker[idx]->addChild(geode.get());
>
>
>  modelSwitch->addChild(mtForMarker[idx]);
>
>
>
>
> With this code the video displayed in  a small size (like 50X50) around
> the centre of the device (Not exactly at the centre of the device). The
> original video size is 640X480. Video is also displaying in upside down.
>
> I am sung ffmpeg plug in for android.
>
> Can you please suggest me what could be the mistake.
> ...
>
> Thank you!
>
> Cheers,
> Koduri
>
> --
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=55425#55425
>
>
>
>
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>



-- 
Jordi Torres
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] Video display problem on Andoid

2013-07-24 Thread Koduri Lakshmi
Hi,

I am trying to play the video on android device.  I did the coding as follows.

in ".H" file.


Code:
osg::ref_ptr geode;
osg::ref_ptr mVideoTexture;
osg::Image* img;
osg::ref_ptr videoStream[2];
osg::ref_ptr mtForMarker[2];
osg::ref_ptr modelSwitch;




In ".CPP" file


Code:
int idx=0;
img = osgDB::readImageFile("1.mp4.mpeg");
videoStream[idx] = dynamic_cast(img);
if (videoStream[idx].valid())
{
LOG( "Got movie");
videoStream[idx]->setLoopingMode( osg::ImageStream::NO_LOOPING);
videoStream[idx]->seek(0);
videoStream[idx]->play();
}
else
   {
  LOG( "No movie!");
   }
aspectRatio = (float)img->t() / (float)img->s();
 videoWidth = img->s();
 videoHeight =videoWidth * aspectRatio;

 mVideoTexture = new osg::Texture2D;
 geode = new osg::Geode;
 mVideoTexture->setImage( videoStream[idx].get() );

 geode->addDrawable(osg::createTexturedQuadGeometry(
 osg::Vec3(0.0f, 0.0f, 0.0f),
 osg::Vec3(videoWidth, 0.0f, 0.0f),
 osg::Vec3(0.0f, 0.0f, videoHeight)

 ));
geode->getOrCreateStateSet()->setTextureAttributeAndModes(0, mVideoTexture, 
osg::StateAttribute::ON );

mtForMarker[idx] = new osg::MatrixTransform();
mtForMarker[idx]->addChild(geode.get());


 modelSwitch->addChild(mtForMarker[idx]);




With this code the video displayed in  a small size (like 50X50) around the 
centre of the device (Not exactly at the centre of the device). The original 
video size is 640X480. Video is also displaying in upside down.

I am sung ffmpeg plug in for android. 

Can you please suggest me what could be the mistake.
... 

Thank you!

Cheers,
Koduri

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=55425#55425




___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org