![]() |
libmoldeo (Moldeo 1.0 Core)
1.0
libmoldeo is the group of objects and functions that executes the basic operations of Moldeo 1.0 Platform.
|
GStreamer Graph Class. Más...
#include <moGsGraph.h>
Métodos públicos | |
moGsGraph () | |
Constructor. Más... | |
virtual | ~moGsGraph () |
Destructor. Más... | |
virtual bool | InitGraph () |
Inicialización del grafo. Más... | |
virtual bool | FinishGraph () |
Finalización del grafo. Más... | |
bool | BuildLiveGraph (moBucketsPool *pBucketsPool, moCaptureDevice p_capdev) |
Grafo de captura de video. Más... | |
bool | SetCaptureDevice (moText deviceport, MOint idevice=0) |
bool | BuildLiveDVGraph (moBucketsPool *pBucketsPool, moCaptureDevice &p_capdev) |
bool | BuildLiveWebcamGraph (moBucketsPool *pBucketsPool, moCaptureDevice &p_capdev) |
bool | BuildLiveVideoGraph (moText filename, moBucketsPool *pBucketsPool) |
Grafo de reproducción de video en modo vivo, asyncronicamente reproducido en función del clock. Más... | |
bool | BuildLiveQTVideoGraph (moText filename, moBucketsPool *pBucketsPool) |
bool | BuildLiveSound (moText filename) |
bool | BuildLiveStreamingGraph (moBucketsPool *pBucketsPool, moText p_location) |
bool | BuildRecordGraph (moText filename, moBucketsPool *pBucketsPool) |
Grafo de grabación. Más... | |
virtual moStreamState | GetState () |
Estado de la reproducción. Más... | |
void | Play () |
Reproducir el video. Más... | |
void | Stop () |
Detener la reproducción del video. Más... | |
void | Pause () |
Pausa la reproducción del video. Más... | |
void | Seek (MOuint frame, float rate=1.0) |
Busca y posiciona. Más... | |
bool | IsRunning () |
Está corriendo. Más... | |
MOulong | GetFramesLength () |
La cantidad de frames, el largo del stream. Más... | |
MOulong | GetSamplesLength () |
MObyte * | GetFrameBuffer (MOlong *size) |
virtual MOulong | GetDuration () |
La duración total del stream en nanosegundos. Más... | |
virtual MOulong | GetPosition () |
virtual MOulong | GetPositionMS () |
void | SetVolume (float volume) |
void | SetBalance (float balance) |
Fija el balance entre canal izquierdo y derecho en caso de haberlos. Más... | |
void | SetPitch (float pitch) |
void | SetEchoDelay (float delay) |
void | SetEchoIntensity (float intensity) |
void | SetEchoFeedback (float feedback) |
void | SetBrightness (float brightness) |
void | SetContrast (float contrast) |
void | SetSaturation (float saturation) |
void | SetHue (float hue) |
void | BuildAudioFilters () |
void | SetVideoFormat (moGstCaps *caps, moGstBuffer *buffer=NULL) |
void | SetAudioFormat (moGstCaps *caps, moGstBuffer *buffer=NULL) |
bool | CheckState (moGstStateChangeReturn state_change_result, bool waitforsync=false) |
void | RetreivePads (moGstElement *FilterElement) |
void | WaitForFormatDefinition (MOulong timeout) |
void | CopyVideoFrame (void *bufferdst, int size) |
virtual bool | IsEOS () |
virtual void | SetEOS (bool iseos) |
![]() | |
moVideoGraph () | |
virtual | ~moVideoGraph () |
moVideoMode | GetVideoMode () |
Devuelve el modo de video. Más... | |
moVideoFormat | GetVideoFormat () |
Devuelve el formato de video. Más... | |
moAudioFormat | GetAudioFormat () |
Devuelve el formato de audio. Más... | |
![]() | |
moAbstract () | |
virtual | ~moAbstract () |
virtual MOboolean | Init () |
Inicializa el objeto. Más... | |
virtual MOboolean | Finish () |
Finaliza el objeto, libera recursos. Más... | |
MOboolean | Initialized () |
Pregunta si está inicializado. Más... | |
Métodos públicos estáticos | |
static moGBoolean | cb_have_data (moGstPad *pad, moGstBuffer *buffer, moGPointer u_data) |
static moGBoolean | cb_buffer_disconnected (moGPointer u_data) |
static void | on_rtsppadd_added (moGstElement *rtspsrc, moGstPad *pad, moGPointer u_data) |
static void | cb_newpad (moGstElement *decodebin, moGstPad *pad, moGBoolean last, moGPointer u_data) |
static void | cb_pad_added (moGstElement *decodebin2, moGstPad *pad, moGPointer u_data) |
static void | cb_handoff (moGstElement *fakesrc, moGstBuffer *buffer, moGstPad *pad, moGPointer user_data) |
![]() | |
static moText | StateToText (moStreamState state) |
Estado de la reproducción (version texto) Más... | |
Atributos públicos | |
long | cb_have_data_handler_id |
long | signal_rtsppad_added_id |
long | signal_newpad_id |
long | m_BusWatchId |
long | signal_handoff_id |
moBucket | m_Buckets [100] |
![]() | |
MOboolean | m_bInitialized |
Valor de inicialización. Más... | |
Otros miembros heredados | |
![]() | |
static moDebug * | MODebug2 = new moDebug() |
Clase de impresión de errores para depuración. Más... | |
static moTextHeap * | MODebug = new moTextHeap() |
Lista de textos. Más... | |
![]() | |
moVideoFormat | m_VideoFormat |
moAudioFormat | m_AudioFormat |
Formato de video. Más... | |
GStreamer Graph Class.
GStreamer Graph Class for video filters and video reproduction: you don't have to link to gstreamer This is C++ wrapper to some GStreamer basic functions...
Definición en la línea 151 del archivo moGsGraph.h.
moGsGraph::moGsGraph | ( | ) |
Constructor.
|
virtual |
Destructor.
void moGsGraph::BuildAudioFilters | ( | ) |
bool moGsGraph::BuildLiveDVGraph | ( | moBucketsPool * | pBucketsPool, |
moCaptureDevice & | p_capdev | ||
) |
|
virtual |
Grafo de captura de video.
genera un grafo para capturar una cámara, especificada por moCaptureDevice
Implementa moVideoGraph.
|
virtual |
bool moGsGraph::BuildLiveSound | ( | moText | filename | ) |
bool moGsGraph::BuildLiveStreamingGraph | ( | moBucketsPool * | pBucketsPool, |
moText | p_location | ||
) |
|
virtual |
Grafo de reproducción de video en modo vivo, asyncronicamente reproducido en función del clock.
genera un grafo para reproducir un video en modo normal
Implementa moVideoGraph.
bool moGsGraph::BuildLiveWebcamGraph | ( | moBucketsPool * | pBucketsPool, |
moCaptureDevice & | p_capdev | ||
) |
|
virtual |
Grafo de grabación.
genera un grafo para grabar a un archivo una serie de imagenes
Implementa moVideoGraph.
|
static |
Definición en la línea 162 del archivo moGsGraph.cpp.
|
static |
|
static |
Definición en la línea 318 del archivo moGsGraph.cpp.
|
static |
|
static |
TODO: no andan en win pGsGraph->BuildAudioFilters(); if (/*pGsGraph->m_pAudioConverter &&
GList* gst_camera_capturer_enum_devices(gchar* device_name) { GstElement* device; GstPropertyProbe* probe; GValueArray* va; GList* list=NULL; guint i=0;
device = gst_element_factory_make (device_name, "source"); gst_element_set_state(device, GST_STATE_READY); gst_element_get_state(device, NULL, NULL, 5 * GST_SECOND); if (!device || !GST_IS_PROPERTY_PROBE(device)) goto finish; probe = GST_PROPERTY_PROBE (device); va = gst_property_probe_get_values_name (probe, "device-name"); if (!va) goto finish; for(i=0; i < va->n_values; ++i) { GValue* v = g_value_array_get_nth(va, i); list = g_list_append(list, g_string_new(g_value_get_string(v))); } g_value_array_free(va);
finish: { gst_element_set_state (device, GST_STATE_NULL); gst_object_unref(GST_OBJECT (device)); return list; } }
GList* +gst_camera_capturer_enum_devices(gchar* device_name) +{
iterate thru list and populate m_CaptureDevices (best as we can)
TODO: implement CheckCaptureDevice
unused
try to load: then if couldn't load it return false....
this is only a reference doesnt destroy it, just pass to null
FINALLY UNREFERENCE PIPELINE, DESTROY ALL
TODO: implement SetCaptureDevice
selecciona entrada!!!
v4lctl setnorm NTSC
y
v4lctl setinput Composite1
SEND gst-launch -m filesrc location=test-aac.3gp ! qtdemux ! rtpmp4gpay ! udpsink host=172.20.122.9 port=19790
RECEIVE gst-launch -m udpsrc port=19790 ! rtpmp4gdepay ! faad ! queue ! amrnbenc ! rtpamrpay pt=98 ! udpsink host=172.20.122.23 port=2006
SEND: gst-launch -m filesrc location=test.wav ! wavparse ! audioconvert ! audioresample !alawenc ! rtppcmapay ! udpsink host=127.0.0.1 port=19790
RECEIVE: gst-launch -m udpsrc port=19790 ! rtppcmadepay ! alawdec ! queue ! amrnbenc ! rtpamrpay pt=98 ! udpsink host=127.0.0.1 port=2006
TODO: implement BuildLiveStreamingGraph
grab at the same time with: gst-launch-0.10 v4l2src ! queue ! ffmpegcolorspace ! theoraenc quality=1 ! queue ! oggmux name=mux alsasrc ! audio/x-raw-int,rate=8000,channels=1,depth=8 ! queue ! audioconvert ! vorbisenc ! queue ! mux. mux. ! queue ! tee name= t ! queue ! filesink location=test.ogg t. ! queue ! shout2send ip=giss.tv port=8000 password=pass
TODO: implement BuildRecordGraph
0x000000FF
0x0000FF00
0x00FF0000
TODO: no need to implement ?!
gstreamer example tests: gst-launch -v dshowvideosrc ! ffmpegcolorspace ! video/x-raw-rgb,bpp=16 ! videoscale ! video/x-raw-rgb,width=160,height=120 ! autovideosink
gstreamer example tests: gst-launch -v dshowvideosrc ! ffmpegcolorspace ! video/x-raw-rgb,bpp=16 ! videoscale ! video/x-raw-rgb,width=160,height=120 ! autovideosink
gst-launch rtspsrc location="rtsp://192.168.0.101/live.sdp" latency=100 ! queue ! rtpmp4vdepay ! queue ! ffdec_mpeg4 ! ffmpegcolorspace ! autovideosink
usando TCP se soluciona la desconección del server automática....
gst-launch rtspsrc location="rtsp://192.168.0.101/live.sdp" latency=100 debug=true protocols=0x00000004 ! queue ! rtpmp4vdepay ! queue ! ffdec_mpeg4 ! ffmpegcolorspace ! autovideosink
referencias:
http://nuald.blogspot.com/2009/07/creating-video-conference-application.html http://stackoverflow.com/questions/1884204/playing-an-incoming-rtp-stream-with-gstreamer
ok
ok
try to link later dynamically
SOUP HTTP source (MJPEG/HTTP) videofeed
STANDAR DEVICES....
m_pColorSpaceSource = gst_element_factory_make ( VIDEOCONVERT, "colorsource"); if (m_pCapsFilterSource) { res = gst_bin_add (GST_BIN (m_pGstPipeline), (GstElement*) m_pColorSpaceSource ); }
https://gstreamer.freedesktop.org/documentation/videofilter/videoflip.html?gi-language=c Members none (0) â Identity (no rotation) clockwise (1) â Rotate clockwise 90 degrees rotate-180 (2) â Rotate 180 degrees counterclockwise (3) â Rotate counter-clockwise 90 degrees horizontal-flip (4) â Flip horizontally vertical-flip (5) â Flip vertically upper-left-diagonal (6) â Flip across upper left/lower right diagonal upper-right-diagonal (7) â Flip across upper right/lower left diagonal automatic (8) â Select flip method based on image-orientation tag Video-orientation-method Members identity (0) â GST_VIDEO_ORIENTATION_IDENTITY 90r (1) â GST_VIDEO_ORIENTATION_90R 180 (2) â GST_VIDEO_ORIENTATION_180 90l (3) â GST_VIDEO_ORIENTATION_90L horiz (4) â GST_VIDEO_ORIENTATION_HORIZ vert (5) â GST_VIDEO_ORIENTATION_VERT ul-lr (6) â GST_VIDEO_ORIENTATION_UL_LR ur-ll (7) â GST_VIDEO_ORIENTATION_UR_LL auto (8) â GST_VIDEO_ORIENTATION_AUTO custom (9) â GST_VIDEO_ORIENTATION_CUSTOM
(GstElement*) m_pColorSpaceSource,
(GstElement*) m_pColorSpaceSource,
get the snapshot buffer format now. We set the caps on the appsink so
that it can only be an rgb buffer. The only thing we have not specified on the caps is the height, which is dependant on the pixel-aspect-ratio of the source material
AUDIOFX
SOUND...
FIN SOUND
agrega sonido en sincro
TODO: not working in win Pause(); Seek(0);
get the snapshot buffer format now. We set the caps on the appsink so that it can only be an rgb buffer. The only thing we have not specified on the caps is the height, which is dependant on the pixel-aspect-ratio of the source material
TODO: for live-stream pause works ok... not for others
TODO: TimeSeek() SampleSeek()
TODO: unused rate!!!
no leemos el ultimo cuadro para no generar un EOS esto depende del modo del play, si esta PLAYING o si esta en PAUSE
TIME SEEK: frame as time in milliseconds
res = gst_element_seek( (GstElement*)m_pGstPipeline, 1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_NONE, GST_SEEK_TYPE_SET, 10 * GST_SECOND, GST_SEEK_TYPE_SET, 20 * GST_SECOND );
TODO:GetFramePosition vs GetSamplePosition sample position = duration / samplerate
TODO: ?? GetFrameBuffer
Definición en la línea 743 del archivo moGsGraph.cpp.
bool moGsGraph::CheckState | ( | moGstStateChangeReturn | state_change_result, |
bool | waitforsync = false |
||
) |
void moGsGraph::CopyVideoFrame | ( | void * | bufferdst, |
int | size | ||
) |
|
virtual |
Finalización del grafo.
Destruye los punteros y estructuras de la clase creadas dinámicamente en la función InitGraph
Implementa moVideoGraph.
|
virtual |
La duración total del stream en nanosegundos.
devuelve la duración total del stream que se encuentra reproduciendo en nanosegundos
Implementa moVideoGraph.
|
virtual |
La cantidad de frames, el largo del stream.
devuelve el largo del stream convertido a frames
Implementa moVideoGraph.
|
virtual |
en nanosegundos para gstreamer!!! 1E-9 1 s = 1E9 ns = 1 billion ns
Implementa moVideoGraph.
|
virtual |
en cuadros
MOulong moGsGraph::GetSamplesLength | ( | ) |
cantidad de cuadros
|
virtual |
Estado de la reproducción.
Devuelve el estado en que se encuentra el grafo, un valor entre MO_STREAMSTATE_UNKNOWN=-1, MO_STREAMSTATE_PAUSED, MO_STREAMSTATE_PLAYING, MO_STREAMSTATE_WAITING, MO_STREAMSTATE_READY, MO_STREAMSTATE_STOPPED
Reimplementado de moVideoGraph.
|
virtual |
Inicialización del grafo.
Inicializa los punteros y estructuras de la clase
Implementa moVideoGraph.
|
virtual |
|
virtual |
Está corriendo.
indicador que señala si el grafo se está reproduciendo
Implementa moVideoGraph.
|
static |
|
virtual |
Pausa la reproducción del video.
comando de pause, interrumpe la reproducción del video
Implementa moVideoGraph.
|
virtual |
Reproducir el video.
comando de play, reproduce el video o continua la reproducción
Implementa moVideoGraph.
void moGsGraph::RetreivePads | ( | moGstElement * | FilterElement | ) |
|
virtual |
Busca y posiciona.
comando de Seek, salta a la posición deseada y luego queda en pausa
frame | esto es un frame... |
Implementa moVideoGraph.
void moGsGraph::SetAudioFormat | ( | moGstCaps * | caps, |
moGstBuffer * | buffer = NULL |
||
) |
|
virtual |
Fija el balance entre canal izquierdo y derecho en caso de haberlos.
Permite modificar el balance estereo entre -1 y 1, siendo -1 todo a la izquierda y 1 todo a la derecha, 0 corresponde al equilibrio entre los dos canales.
balance | nivel balance entre los dos canales, entre -1 y 1 |
Implementa moVideoGraph.
|
virtual |
|
virtual |
void moGsGraph::SetEchoDelay | ( | float | delay | ) |
void moGsGraph::SetEchoFeedback | ( | float | feedback | ) |
void moGsGraph::SetEchoIntensity | ( | float | intensity | ) |
|
virtual |
|
virtual |
void moGsGraph::SetPitch | ( | float | pitch | ) |
|
virtual |
void moGsGraph::SetVideoFormat | ( | moGstCaps * | caps, |
moGstBuffer * | buffer = NULL |
||
) |
|
virtual |
|
virtual |
Detener la reproducción del video.
comando de stop, detiene la reproducción del video
Implementa moVideoGraph.
void moGsGraph::WaitForFormatDefinition | ( | MOulong | timeout | ) |
long moGsGraph::cb_have_data_handler_id |
Definición en la línea 250 del archivo moGsGraph.h.
|
private |
Definición en la línea 377 del archivo moGsGraph.h.
moBucket moGsGraph::m_Buckets[100] |
Definición en la línea 295 del archivo moGsGraph.h.
long moGsGraph::m_BusWatchId |
Definición en la línea 278 del archivo moGsGraph.h.
|
private |
Definición en la línea 305 del archivo moGsGraph.h.
|
private |
Definición en la línea 373 del archivo moGsGraph.h.
|
private |
Definición en la línea 374 del archivo moGsGraph.h.
|
private |
audioamplify: amplification: -inf +inf (dangerous)
Definición en la línea 354 del archivo moGsGraph.h.
|
private |
"filesink" audio elements
Definición en la línea 341 del archivo moGsGraph.h.
|
private |
Definición en la línea 342 del archivo moGsGraph.h.
|
private |
Definición en la línea 343 del archivo moGsGraph.h.
|
private |
Definición en la línea 344 del archivo moGsGraph.h.
|
private |
echo effect : audioecho > delay [ nanoseconds 10E-9, intensity, feedback ]
Definición en la línea 348 del archivo moGsGraph.h.
|
private |
audio pad last out
Definición en la línea 360 del archivo moGsGraph.h.
|
private |
stereo balance-1 a 1: panorama
Definición en la línea 346 del archivo moGsGraph.h.
|
private |
"filesink"
Definición en la línea 338 del archivo moGsGraph.h.
|
private |
speed:pitch speed 0.1 - 40.0
Definición en la línea 350 del archivo moGsGraph.h.
|
private |
volume: volume, 0 - 10 [1]
Definición en la línea 352 del archivo moGsGraph.h.
|
private |
Definición en la línea 300 del archivo moGsGraph.h.
|
private |
"ffmpegcolorspace"
Definición en la línea 319 del archivo moGsGraph.h.
|
private |
"finalsource"
Definición en la línea 318 del archivo moGsGraph.h.
|
private |
Definición en la línea 327 del archivo moGsGraph.h.
|
private |
"ffmpegcolorspace for deinterlace"
Definición en la línea 329 del archivo moGsGraph.h.
|
private |
"fakesrc"
Definición en la línea 334 del archivo moGsGraph.h.
|
private |
"decodebin"
Definición en la línea 330 del archivo moGsGraph.h.
|
private |
"videotestsrc"
Definición en la línea 333 del archivo moGsGraph.h.
|
private |
"recorder"
Definición en la línea 336 del archivo moGsGraph.h.
|
private |
análogo a ifiltergraph, oh si Elements (filters)
Definición en la línea 311 del archivo moGsGraph.h.
|
private |
"jpeg decode"
Definición en la línea 317 del archivo moGsGraph.h.
|
private |
Definición en la línea 371 del archivo moGsGraph.h.
|
private |
bus, analogo a IMediaControl...
Definición en la línea 370 del archivo moGsGraph.h.
|
private |
Definición en la línea 303 del archivo moGsGraph.h.
|
private |
Control Bus
Definición en la línea 368 del archivo moGsGraph.h.
|
private |
Bin's o Pipeline's (Filtergraph...)
Definición en la línea 308 del archivo moGsGraph.h.
|
private |
"rtsp depay"
Definición en la línea 314 del archivo moGsGraph.h.
|
private |
"typefind"
Definición en la línea 321 del archivo moGsGraph.h.
|
private |
"multipardemux for souphttpsrc"
Definición en la línea 316 del archivo moGsGraph.h.
|
private |
"http source"
Definición en la línea 315 del archivo moGsGraph.h.
|
private |
"encoder"
Definición en la línea 335 del archivo moGsGraph.h.
|
private |
"rtsp depay"
Definición en la línea 313 del archivo moGsGraph.h.
|
private |
video pad last out Pad's o Pines para el DecoderBin
Definición en la línea 363 del archivo moGsGraph.h.
|
private |
"filesrc"
Definición en la línea 312 del archivo moGsGraph.h.
|
private |
Definición en la línea 365 del archivo moGsGraph.h.
|
private |
Definición en la línea 364 del archivo moGsGraph.h.
|
private |
"capsfilter"
Definición en la línea 320 del archivo moGsGraph.h.
|
private |
Definición en la línea 326 del archivo moGsGraph.h.
|
private |
Definición en la línea 325 del archivo moGsGraph.h.
|
private |
Definición en la línea 324 del archivo moGsGraph.h.
|
private |
Pad's o Pines para el DecoderBin
Definición en la línea 359 del archivo moGsGraph.h.
|
private |
"identity"
Definición en la línea 323 del archivo moGsGraph.h.
|
private |
"fakesink"
Definición en la línea 331 del archivo moGsGraph.h.
|
private |
Definición en la línea 375 del archivo moGsGraph.h.
long moGsGraph::signal_handoff_id |
Definición en la línea 285 del archivo moGsGraph.h.
long moGsGraph::signal_newpad_id |
Definición en la línea 277 del archivo moGsGraph.h.
long moGsGraph::signal_rtsppad_added_id |
Definición en la línea 255 del archivo moGsGraph.h.