DirectShow - Java Video Streaming
Is there any available information on how to stream a video across a newtwork through dsj without JMF?
Thanks a lot
The demo does that and it is described in the javadocs for WMNetSink.
nils
P.S. Please use the DirectShow<>java thread for questions on dsj
Similar Messages
-
Hello
I try to get an overview of what's possible according to video streaming in sun's wonderland. The goal is to stream prerecorded videos, stored on a webserver (not necessarily on the same machine like the wl-server ) into our wonderland embedded swing application.
My first investigation shows me, that I have the following possibilities to stream videos in Java:
- Java Media Framework (JMF)
- JVLC (VideoLAN Java API)
- Quicktime Streaming API (only quicktime movies)
-> http://www.onjava.com/pub/a/onjava/2005/01/12/strmng_qtj.html
- Red5 Java Client (only flash movies):
-> http://www.actionscript.org/resources/articles/617/1/Streaming-and-database-connection-with-red5-media-server/Page1.html
- Mplayer Java Client:
-> http://beradrian.wordpress.com/2008/01/30/jmplayer/
So what do you suggest me? What's the best way? Are there any code-examples for streaming videos from a webserver to a local java-client using JMF?
Thanks for your help.
Kind regards,
Peter
Edited by: blood_on_ice on Mar 23, 2009 12:44 AMThanks for your answer...
>
The "best" way? Considering you're using a Swing application, your best bet is probably going to be JMF. JavaFX has support for playing videos, but I'm not sure if they have support for RTP streams or progressive downloads or anything.
If you wanted to go the extra mile, you could look into embedding a Silverlight or Flash player into your Swing application. Silverlight is pretty cool because it's HD capable...>
Yes I have to develop the video streaming in a swing non-top-level Swing JComponent (such as a JPanel) because this is a wonderland restriction...I don't know JavaFX yet, is it possible to build a JavaFX app inside such a non-top-level Swing component? Embedding silverlight in a java-app isn't a really good idea I think...
Further recherches shows me, that I need on-demand video streaming with the ability to start, stop, play, pause etc. the video which is stored for example on a webserver. This is possible throught RTSP or HTTP according to: [http://www.remlab.net/op/vod.shtml|http://www.remlab.net/op/vod.shtml] ...when I use rtsp, I need a streaming-server like vlc, for http i just need my video stored on a webserver.
So what do I have for possibilities to stream such a video in a java client (non-top-level Swing JComponent) with RTSP or HTTP?
I've tried following rtp-code-example: [http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/solutions/AVReceive.html|http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/solutions/AVReceive.html]
but it didn't work...I started my vlc-streaming server this way:
cvlc -vvv movie.mpg --sout '#rtp{dst=192.168.1.33,port=1234,sdp=http://localhost:8080}'but the output of the rtp-code-example shows the following:
run:
- Open RTP session for: addr: 127.0.0.1 port: 8080 ttl: 1
- Waiting for RTP data to arrive...
- Waiting for RTP data to arrive...
- Waiting for RTP data to arrive...
- Waiting for RTP data to arrive...
- Waiting for RTP data to arrive...
With vlc http://127.0.0.1:8080 i receive the stream...
But I couldn't find an example of how I can get an rtsp-stream or a http-stream in jmf...
Thanks for your help.
Kind regards,
Peter
Edited by: blood_on_ice on Mar 23, 2009 8:59 AM
Edited by: blood_on_ice on Mar 23, 2009 9:00 AM -
Finding a java video streaming player
I recently use FreePastry to implement a p2p video streaming system.
But now i have a new challege, which bother me several days.
In Splitstream, which uses Byte[] to send the data to other peer.
I want find a java video player. It would be best to receive Byte[] as input.
I try JMF, but it use RTP as the input.
Is there any other video players suited about my case.There is a function in LiveStream.java called read. Read passes in a buffer object. The goal is to write all of the data you have available into the buffer object.
What you want to do is something along the lines of the following pseudocode...
public void read(Buffer buffer) throws IOException {
synchronized (this) {
/* Get the data */
byte[] data = FunctionThatGetsByteArrayFromTheNetwork();
/* Write the data to the buffer object */
buffer.setData(data);
}As for using the PushBufferDataSource, you just create one like you would a normal class (just use the new operator) and give it to a processor or a player like you would a normal data source.
You need to include the DataSource.java code like the example does, modify it to use your modified LiveStream.java (you'll probably change the names of classes, so update the DataSource.java class to reflect those changes) and then just use it to create your DataSource.
/* From DataSource.java */
DataSource ds = new DataSource();
/* Normal way of doing this */
Processor p = Manager.createProcessor(ds); -
Really need Help! - Java Video Streaming
Hi,
I bought a 'Creative' web-cam today and I want to be able to display real-time video in a Java applet. Could someone please help me to do this.
What classes do I need to capture the video, and use a server to either broadcast or stream the video to a client( applet ).
I have JMF 1.2.1 installed with jdk1.3.1
I'm kindof new to Java and really need to know where to start.
FYou should use JMF 2.0 or above version because they provide capturing ability.And also see the page. http://java.sun.com/products/java-media/jmf/2.1.1/solutions/
I think you will find some useful material on this page. -
hey
i am trying to find how to obtian a video stream from a webcam using java code
if u can help me please.ars_03 wrote:
i am trying to find how to obtian a video stream from a webcam using java code
if u can help me please.General questions usually stimulate general answers, such as "google it". If you truly want help, you will put more effort into your question such as answering these questions:
* What do you know already about doing this?
* What sources have you looked up and studied?
* Of this, what specifically do you not understand?
* What is the current state of your program?
* Is it running? compiling?
* Are there errors? if so, post them.
etc...
The bottom line here is usually the more thought and effort you put into creating your question, the better your chances are of a volunteer here taking the time and effort to consider it and give you a helpful answer. You would benefit greatly by reading this link (one I try to re-study at least every other week as it helps me):
[http://www.catb.org/~esr/faqs/smart-questions.html] -
Storing that Video stream into our local disk in java
Hi frendz,
I want to know how to, Connect to a remote online webcam and store that Video stream into our local disk.
Any java interface tools are there, or can we use java api to do so.
Anybody Please share your valuable suggestions.
thanx,
[email protected]Hi frendz,
I want to know how to, Connect to a remote online
webcam and store that Video stream into our local
disk. The jennicam is no longer online. -
Java Playerless Streamed video
Hi all,
We are not java developers but content providers and we would like to use java technology in use for video streaming re providing playerless video to our clients via IE browswer or email.
Is it possible and where do you start?
Would anybody be familiar with this technology?...could help us testing some examples for clients?
Any response is welcome.
We are based in UKTry the Java Media framework
http://java.sun.com/products/java-media/jmf/2.1.1/ -
CTD bug in simple video streaming applet.
I'm trying to write a simple applet to use JMF to allow an end-user to view a video stream that's being served up by VLC. It doesn't have to look immensely pretty (in fact, streamlined is what I want most). I swiped some code from the jicyshout project (http://jicyshout.sourceforge.net) which handles streaming MP3s, and borrowed a framework for an applet from one of Sun's example applets for the JMF.
Here's my code so far:
** begin file SimpleVideoDataSource.java **
import java.lang.String;
import java.net.*;
import java.io.*;
import java.util.Properties;
import javax.media.*;
import javax.media.protocol.*;
/* The SeekableStream and DataSource tweaks are based on the code from
* jicyshout (jicyshout.sourcefourge.net), which was written by Chris Adamson.
* The code was simplified (no need for mp3 metadata here), cleaned up, then
* extended for our puposes.
* This is a DataSource using a SeekableStream suitable for
* streaming video using the default parser supplied by JMF.
public class SimpleVideoDataSource extends PullDataSource {
protected MediaLocator myML;
protected SeekableInputStream[] seekStreams;
protected URLConnection urlConnection;
// Constructor (trivial).
public SimpleVideoDataSource (MediaLocator ml) throws MalformedURLException {
super ();
myML = ml;
URL url = ml.getURL();
public void connect () throws IOException {
try {
URL url = myML.getURL();
urlConnection = url.openConnection();
// Make the stream seekable, so that the JMF parser can try to parse it (instead
// of throwing up).
InputStream videoStream = urlConnection.getInputStream();
seekStreams = new SeekableInputStream[1];
seekStreams[0] = new SeekableInputStream(videoStream);
} catch (MalformedURLException murle) {
throw new IOException ("Malformed URL: " + murle.getMessage());
} catch (ArrayIndexOutOfBoundsException aioobe) {
fatalError("Array Index OOB: " + aioobe);
// Closes up InputStream.
public void disconnect () {
try {
seekStreams[0].close();
} catch (IOException ioe) {
System.out.println ("Can't close stream. Ew?");
ioe.printStackTrace();
// Returns just what it says.
public String getContentType () {
return "video.mpeg";
// Does nothing, since this is a stream pulled from PullSourceStream.
public void start () {
// Ditto.
public void stop () {
// Returns a one-member array with the SeekableInputStream.
public PullSourceStream[] getStreams () {
try {
// **** This seems to be the problem. ****
if (seekStreams != null) {
return seekStreams;
} else {
fatalError("sourceStreams was null! Bad kitty!");
return seekStreams;
} catch (Exception e) {
fatalError("Error in getStreams(): " + e);
return seekStreams;
// Duration abstract stuff. Since this is a theoretically endless stream...
public Time getDuration () {
return DataSource.DURATION_UNBOUNDED;
// Controls abstract stuff. No controls supported here!
public Object getControl (String controlName) {
return null;
public Object[] getControls () {
return null;
void fatalError (String deathKnell) {
System.err.println(":[ Fatal Error ]: - " + deathKnell);
throw new Error(deathKnell);
** end file SimpleVideoDataSource.java **
** begin file SeekableInputStream.java **
import java.lang.String;
import java.net.*;
import java.io.*;
import java.util.Properties;
import javax.media.*;
import javax.media.protocol.*;
/* The SeekableStream and DataSource tweaks are based on the code from
* jicyshout (jicyshout.sourcefourge.net), which was written by Chris Adamson.
* The code was simplified (no need for mp3 metadata here), cleaned up, then
* extended for our puposes.
/* This is an implementation of a SeekableStream which extends a
* BufferedInputStream to basically fake JMF into thinking that
* the stream is seekable, when in fact it's not. Basically, this
* will keep JMF from puking over something it expects but can't
* actually get.
public class SeekableInputStream extends BufferedInputStream implements PullSourceStream, Seekable {
protected int tellPoint;
public final static int MAX_MARK = 131072; // Give JMF 128k of data to "play" with.
protected ContentDescriptor unknownCD;
// Constructor. Effectively trivial.
public SeekableInputStream (InputStream in) {
super (in, MAX_MARK);
tellPoint = 0;
mark (MAX_MARK);
unknownCD = new ContentDescriptor ("unknown");
// Specified size constructor.
public SeekableInputStream (InputStream in, int size) {
super (in, Math.max(size, MAX_MARK));
tellPoint = 0;
mark(Math.max(size, MAX_MARK));
unknownCD = new ContentDescriptor ("unknown");
// Reads a byte and increments tellPoint.
public int read () throws IOException {
int readByte = super.read();
tellPoint++;
return readByte;
// Reads bytes (specified by PullSourceStream).
public int read (byte[] buf, int off, int len) throws IOException {
int bytesRead = super.read (buf, off, len);
tellPoint += bytesRead;
return bytesRead;
public int read (byte[] buf) throws IOException {
int bytesRead = super.read (buf);
tellPoint += bytesRead;
return bytesRead;
// Returns true if in.available() <= 0 (that is, if there are no bytes to
// read without blocking or end-of-stream).
public boolean willReadBlock () {
try {
return (in.available() <= 0);
} catch (IOException ioe) {
// Stick a fork in it...
return true;
// Resets the tellPoint to 0 (meaningless after you've read one buffer length).
public void reset () throws IOException {
super.reset();
tellPoint = 0;
// Skips bytes as expected.
public long skip (long n) throws IOException {
long skipped = super.skip(n);
tellPoint += skipped;
return skipped;
// Trivial.
public void mark (int readLimit) {
super.mark (readLimit);
// Returns the "unknown" ContentDescriptor.
public ContentDescriptor getContentDescriptor () {
return unknownCD;
// Lengths? We don't need no stinkin' lengths!
public long getContentLength () {
return SourceStream.LENGTH_UNKNOWN;
// Theoretically, this is always false.
public boolean endOfStream () {
return false;
// We don't provide any controls, either.
public Object getControl (String controlName) {
return null;
public Object[] getControls () {
return null;
// Not really... but...
public boolean isRandomAccess () {
return true;
// This only works for the first bits of the stream, while JMF is attempting
// to figure out what the stream is. If it tries to seek after that, bad
// things are going to happen (invalid-mark exception).
public long seek (long where) {
try {
reset();
mark(MAX_MARK);
skip(where);
} catch (IOException ioe) {
ioe.printStackTrace();
return tell();
// Tells where in the stream we are, adjusted for seeks, resets, skips, etc.
public long tell () {
return tellPoint;
void fatalError (String deathKnell) {
System.err.println(":[ Fatal Error ]: - " + deathKnell);
throw new Error(deathKnell);
** end file SeekableInputStream.java **
** begin file StreamingViewerApplet.java **
* This Java Applet will take a streaming video passed to it via the applet
* command in the embedded object and attempt to play it. No fuss, no muss.
* Based on the SimplePlayerApplet from Sun, and uses a modified version of
* jicyshout's (jicyshout.sourceforge.net) tweaks to get JMF to play streams.
* Use it like this:
* <!-- Sample HTML
* <APPLET CODE="StreamingViewerApplet.class" WIDTH="320" HEIGHT="240">
* <PARAM NAME="code" VALUE="StreamingViewerApplet.class">
* <PARAM NAME="type" VALUE="application/x-java-applet;version=1.1">
* <PARAM NAME="streamwidth" VALUE="width (defaults to 320, but will resize as per video size)">
* <PARAM NAME="streamheight" VALUE="height (defaults to 240, but will resize as per video size)">
* <PARAM NAME="stream" VALUE="insert://your.stream.address.and:port/here/">
* </APPLET>
* -->
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.lang.String;
import java.lang.ArrayIndexOutOfBoundsException;
import java.net.URL;
import java.net.MalformedURLException;
import java.net.*;
import java.io.*;
import java.io.IOException;
import java.util.Properties;
import javax.media.*;
import javax.media.protocol.*;
public class StreamingViewerApplet extends Applet implements ControllerListener {
Player player = null;
Component visualComponent = null;
SimpleVideoDataSource dataSource;
URL url;
MediaLocator ml;
Panel panel = null;
int width = 0;
static int DEFAULT_VIDEO_WIDTH = 320;
int height = 0;
static int DEFAULT_VIDEO_HEIGHT = 240;
String readParameter = null;
// Initialize applet, read parameters, create media player.
public void init () {
try {
setLayout(null);
setBackground(Color.white);
panel = new Panel();
panel.setLayout(null);
add(panel);
// Attempt to read width from applet parameters. If not given, use default.
if ((readParameter = getParameter("streamwidth")) == null) {
width = DEFAULT_VIDEO_WIDTH;
} else {
width = Integer.parseInt(readParameter);
// Ditto for height.
if ((readParameter = getParameter("streamheight")) == null) {
height = DEFAULT_VIDEO_HEIGHT;
} else {
height = Integer.parseInt(readParameter);
panel.setBounds(0, 0, width, height);
// Unfortunately, this we can't default.
if ((readParameter = getParameter("stream")) == null) {
fatalError("You must provide a stream parameter!");
try {
url = new URL(readParameter);
ml = new MediaLocator(url);
dataSource = new SimpleVideoDataSource(ml);
} catch (MalformedURLException murle) {
fatalError("Malformed URL Exception: " + murle);
try {
dataSource.connect();
player = Manager.createPlayer(dataSource);
} catch (IOException ioe) {
fatalError("IO Exception: " + ioe);
} catch (NoPlayerException npe) {
fatalError("No Player Exception: " + npe);
if (player != null) {
player.addControllerListener(this);
} else {
fatalError("Failed to init() player!");
} catch (Exception e) {
fatalError("Error opening player. Details: " + e);
// Start stream playback. This function is called the
// first time that the applet runs, and every time the user
// re-enters the page.
public void start () {
try {
if (player != null) {
player.realize();
while (player.getState() != Controller.Realized) {
Thread.sleep(100);
// Crashes... here?
player.start();
} catch (Exception e) {
fatalError("Exception thrown: " + e);
public void stop () {
if (player != null) {
player.stop();
player.deallocate();
} else {
fatalError("stop() called on a null player!");
public void destroy () {
// player.close();
// This controllerUpdate function is defined to implement a ControllerListener
// interface. It will be called whenever there is a media event.
public synchronized void controllerUpdate(ControllerEvent event) {
// If the player is dead, just leave.
if (player == null)
return;
// When the player is Realized, get the visual component and add it to the Applet.
if (event instanceof RealizeCompleteEvent) {
if (visualComponent == null) {
if ((visualComponent = player.getVisualComponent()) != null) {
panel.add(visualComponent);
Dimension videoSize = visualComponent.getPreferredSize();
width = videoSize.width;
height = videoSize.height;
visualComponent.setBounds(0, 0, width, height);
} else if (event instanceof CachingControlEvent) {
// With streaming, this doesn't really matter much, does it?
// Without, a progress bar of some sort would be appropriate.
} else if (event instanceof EndOfMediaEvent) {
// We should never see this... but...
player.stop();
fatalError("EndOfMediaEvent reached for streaming media. ewe ewe tea eff?");
} else if (event instanceof ControllerErrorEvent) {
player = null;
fatalError(((ControllerErrorEvent)event).getMessage());
} else if (event instanceof ControllerClosedEvent) {
panel.removeAll();
void fatalError (String deathKnell) {
System.err.println(":[ Fatal Error ]: - " + deathKnell);
throw new Error(deathKnell);
** end file StreamingViewerApplet.java **
Now, I'm still new to the JMF, so this might be obvious to some of you... but it's exploding on me, and crashing to desktop (both in IE and Firefox) with some very fun errors:
# An unexpected error has been detected by HotSpot Virtual Machine:
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x21217921, pid=3200, tid=3160
# Java VM: Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode, sharing)
# Problematic frame:
# C 0x21217921
--------------- T H R E A D ---------------
Current thread (0x058f7280): JavaThread "JMF thread: com.sun.media.amovie.AMController@506411[ com.sun.media.amovie.AMController@506411 ] ( realizeThread)" [_thread_in_native, id=3160]
siginfo: ExceptionCode=0xc0000005, writing address 0x034e6360
(plenty more here, I can post the rest if necessary)
The problem seems to be coming from the "return seekStreams" statement in the first file; when I have execution aborted before that (with a fatalError call), it doesn't crash.
Any tips/hints/suggestions?You should write your own Applet, where you can easily get the visual component (getVisualComponent())and show it directly in your Applet (you call it "embedded"). As far as I know, all examples (AVReceive* etc.) use the component which opens a new window.
Best regards from Germany,
r.v. -
How to acess a PTC camera video stream from DVR card/PCI-slot
I have a security camera which i connected to PC using PCISLOT/DVR Card.
My requirement is to get the video stream from this camera and show in my program using java
if it is possible using java and how to do this.
Thanks in advanceBelieve it or not, this isn't really a Java question. You should begin by looking around your camera manufacturer's website for Java APIs, then their forums if they have any, contacting support and so on. Hoping that a general Java community will know exactly what is required here is a bit pie-in-the-sky.
-
Saving video stream from webcam periodically!!!
Hi there, I want to catch every 1 minute video stream from the webcam, or video file, and save it into separate files. Of course I woudl like to have possibility to save many streams simultaneously. Any idea?
Best regardsHi,
I want to do the same thing ... I was able to stream audio through the socket but could not stream video.
I posted my question at http://forum.java.sun.com/thread.jspa?threadID=674676&tstart=15
and presented a sketch of my implementation design. But until now no one has answered my question.
This is how you should hook up the components on the transmitter side
Webcam --> Processor --> Custom DataSink --> PushBufferStream --> PushBufferHandler --> Socket --> Network.
You can implement the transferData() method of the PushBufferHandler to write to a socket.
And on the Receiver side the components should be hooked up like this
Network --> Socket --> PullBufferStream --> custom DataSource --> Player
Now as I mentioned in
http://forum.java.sun.com/thread.jspa?threadID=674676&tstart=15
the audio works fine but the video does not. The video does not render on the receiver side.
Note: I tried TCP sockets with audio and it is terrible (not practical at all) so I reverted to UDP datagrams and the result was better than I expected. I didn't take care of the ordering of received packet at the receiver but it still worked fine.
I am still looking waiting for some help in why video is not rendering and how can I sovle this problem.
I am workning on a project and time is running out.
Any help?
-Adel -
All video streaming has continuous pixelation/macroblocking issues
On youtube, dailymotion, vimeo, etc. (all internet video streaming sites) the video becomes pixelated and I get macroblocking. It appears for a few seconds, then it goes away, then a few seconds later it comes back. It does this continuously off and on. This happened before and I couldn't find a solution so I re-installed Windows 7 and then the problem went away. But only 3 weeks into the new re-boot and the problem has resurfaced. I have no idea what happened or how to fix it. Please help!! I can give you the specs for my PC and let you know whatever else is needed to solve this problem. My PC skills are not that advanced, but I can follow directions very well. This problem is starting to really piss me off. When I download a youtube video, the problem is not there when I watch it on VLC media player. The problem is only present when I am streaming it from the internet. This problem just "appeared". It was not there on a clean re-install. I don't know how it re-surfaced again. I've searched through other forums an I cannot find an answer anywhere! I need to know the source of the problem and I thought it might be Adobe Flash, but I am not sure. When the videos become pixelated, it looks like this (I took a screen shot):
My browser is Firefox version 18.0 (it is up-to-date) and I have DownloadHelper version 4.9.13 and Adblock Plus version 2.2.1 as add-ons. My Adobe flash player version is 11.5.502.146. My operating system is Windows 7 Professional (64-bit). The HTML5 video worked perfectly fine. No problems with that one. The Non-HTML5 video showed the same problems I keep running into. Here is a cropped screenshot of it:
Thank you. I really appreciate the help. So what is the next step??? The HTML5 video had no problems and worked perfectly fine. I figured it would just be easier to show my entire system information (motherboard, processor, video card etc.), so here is the output from the DirectX Diagnotic Tool regarding my system information:
System Information
Time of this report: 1/14/2013, 20:36:43
Machine name: KYLE-PC
Operating System: Windows 7 Professional 64-bit (6.1, Build 7601) Service Pack 1 (7601.win7sp1_gdr.120830-0333)
Language: English (Regional Setting: English)
System Manufacturer: Gigabyte Technology Co., Ltd.
System Model: GA-890GPA-UD3H
BIOS: Award Modular BIOS v6.00PG
Processor: AMD Phenom(tm) II X4 970 Processor (4 CPUs), ~3.5GHz
Memory: 4096MB RAM
Available OS Memory: 3582MB RAM
Page File: 1977MB used, 5183MB available
Windows Dir: C:\Windows
DirectX Version: DirectX 11
DX Setup Parameters: Not found
User DPI Setting: Using System DPI
System DPI Setting: 96 DPI (100 percent)
DWM DPI Scaling: Disabled
DxDiag Version: 6.01.7601.17514 32bit Unicode
DxDiag Notes
Display Tab 1: No problems found.
Sound Tab 1: No problems found.
Sound Tab 2: No problems found.
Sound Tab 3: No problems found.
Input Tab: No problems found.
DirectX Debug Levels
Direct3D: 0/4 (retail)
DirectDraw: 0/4 (retail)
DirectInput: 0/5 (retail)
DirectMusic: 0/5 (retail)
DirectPlay: 0/9 (retail)
DirectSound: 0/5 (retail)
DirectShow: 0/6 (retail)
Display Devices
Card name: ATI Radeon HD 4290
Manufacturer: ATI Technologies Inc.
Chip type: ATI display adapter (0x9714)
DAC type: Internal DAC(400MHz)
Device Key: Enum\PCI\VEN_1002&DEV_9714&SUBSYS_D0001458&REV_00
Display Memory: 2161 MB
Dedicated Memory: 627 MB
Shared Memory: 1534 MB
Current Mode: 1360 x 768 (32 bit) (60Hz)
Monitor Name: Generic PnP Monitor
Monitor Model: SAMSUNG
Monitor Id: SAM0505
Native Mode: 1360 x 768(p) (60.015Hz)
Output Type: HDMI
Driver Name: atiu9p64.dll,aticfx64.dll,atiu9pag,aticfx32,atiumd64.dll,atidxx64.dll,atiumdag,atidxx32,a tiumdva,atiumd6a.cap,atitmm64.dll
Driver File Version: 8.14.0001.6105 (English)
Driver Version: 8.723.0.0
DDI Version: 10.1
Driver Model: WDDM 1.1
Driver Attributes: Final Retail
Driver Date/Size: 4/6/2010 20:22:38, 28160 bytes
WHQL Logo'd: Yes
WHQL Date Stamp:
Device Identifier: {D7B71EE2-D454-11CF-3160-01F0A1C2C535}
Vendor ID: 0x1002
Device ID: 0x9714
SubSys ID: 0xD0001458
Revision ID: 0x0000
Driver Strong Name: oem2.inf:ATI.Mfg.NTamd64.6.1:ati2mtag_RS880:8.723.0.0:pci\ven_1002&dev_9714
Rank Of Driver: 00E62001
Video Accel: ModeMPEG2_A ModeMPEG2_C
Deinterlace Caps: {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY
{6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(YV12,0x32315659) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{3C5323C1-6FB7-44F5-9081-056BF2EE449D}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,2) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{552C0DAD-CCBC-420B-83C8-74943CF9F1A6}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,2) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC1,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC2,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC3,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC4,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(S340,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(S342,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
D3D9 Overlay: Not Supported
DXVA-HD: Not Supported
DDraw Status: Enabled
D3D Status: Enabled
AGP Status: Enabled
Sound Devices
Description: Realtek HDMI Output (ATI HDMI Audio)
Default Sound Playback: Yes
Default Voice Playback: Yes
Hardware ID: HDAUDIO\FUNC_01&VEN_1002&DEV_791A&SUBSYS_00791A00&REV_1000
Manufacturer ID: 1
Product ID: 100
Type: WDM
Driver Name: RtHDMIVX.sys
Driver Version: 6.00.0001.6034 (English)
Driver Attributes: Final Retail
WHQL Logo'd: Yes
Date and Size: 1/26/2010 22:05:00, 231328 bytes
Other Files:
Driver Provider: Realtek Semiconductor Corp.
HW Accel Level: Basic
Cap Flags: 0xF1F
Min/Max Sample Rate: 100, 200000
Static/Strm HW Mix Bufs: 1, 0
Static/Strm HW 3D Bufs: 0, 0
HW Memory: 0
Voice Management: No
EAX(tm) 2.0 Listen/Src: No, No
I3DL2(tm) Listen/Src: No, No
Sensaura(tm) ZoomFX(tm): No
Description: Realtek Digital Output(Optical) (Realtek High Definition Audio)
Default Sound Playback: No
Default Voice Playback: No
Hardware ID: HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS_1458A102&REV_1003
Manufacturer ID: 1
Product ID: 100
Type: WDM
Driver Name: RTKVHD64.sys
Driver Version: 6.00.0001.6083 (English)
Driver Attributes: Final Retail
WHQL Logo'd: Yes
Date and Size: 4/6/2010 05:17:44, 2337440 bytes
Other Files:
Driver Provider: Realtek Semiconductor Corp.
HW Accel Level: Basic
Cap Flags: 0xF1F
Min/Max Sample Rate: 100, 200000
Static/Strm HW Mix Bufs: 1, 0
Static/Strm HW 3D Bufs: 0, 0
HW Memory: 0
Voice Management: No
EAX(tm) 2.0 Listen/Src: No, No
I3DL2(tm) Listen/Src: No, No
Sensaura(tm) ZoomFX(tm): No
Description: Realtek Digital Output (Realtek High Definition Audio)
Default Sound Playback: No
Default Voice Playback: No
Hardware ID: HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS_1458A102&REV_1003
Manufacturer ID: 1
Product ID: 100
Type: WDM
Driver Name: RTKVHD64.sys
Driver Version: 6.00.0001.6083 (English)
Driver Attributes: Final Retail
WHQL Logo'd: Yes
Date and Size: 4/6/2010 05:17:44, 2337440 bytes
Other Files:
Driver Provider: Realtek Semiconductor Corp.
HW Accel Level: Basic
Cap Flags: 0xF1F
Min/Max Sample Rate: 100, 200000
Static/Strm HW Mix Bufs: 1, 0
Static/Strm HW 3D Bufs: 0, 0
HW Memory: 0
Voice Management: No
EAX(tm) 2.0 Listen/Src: No, No
I3DL2(tm) Listen/Src: No, No
Sensaura(tm) ZoomFX(tm): No
Sound Capture Devices
Description: Realtek Digital Input (Realtek High Definition Audio)
Default Sound Capture: Yes
Default Voice Capture: Yes
Driver Name: RTKVHD64.sys
Driver Version: 6.00.0001.6083 (English)
Driver Attributes: Final Retail
Date and Size: 4/6/2010 05:17:44, 2337440 bytes
Cap Flags: 0x1
Format Flags: 0xFFFFF
DirectInput Devices
Device Name: Mouse
Attached: 1
Controller ID: n/a
Vendor/Product ID: n/a
FF Driver: n/a
Device Name: Keyboard
Attached: 1
Controller ID: n/a
Vendor/Product ID: n/a
FF Driver: n/a
Device Name: Logitech USB Keyboard
Attached: 1
Controller ID: 0x0
Vendor/Product ID: 0x046D, 0xC31B
FF Driver: n/a
Device Name: Logitech USB Keyboard
Attached: 1
Controller ID: 0x0
Vendor/Product ID: 0x046D, 0xC31B
FF Driver: n/a
Poll w/ Interrupt: No
USB Devices
+ USB Root Hub
| Vendor/Product ID: 0x1002, 0x4397
| Matching Device ID: usb\root_hub
| Service: usbhub
Gameport Devices
PS/2 Devices
+ HID Keyboard Device
| Vendor/Product ID: 0x046D, 0xC31B
| Matching Device ID: hid_device_system_keyboard
| Service: kbdhid
|
+ Terminal Server Keyboard Driver
| Matching Device ID: root\rdp_kbd
| Upper Filters: kbdclass
| Service: TermDD
|
+ HID-compliant mouse
| Vendor/Product ID: 0x046D, 0xC062
| Matching Device ID: hid_device_system_mouse
| Service: mouhid
|
+ Terminal Server Mouse Driver
| Matching Device ID: root\rdp_mou
| Upper Filters: mouclass
| Service: TermDD
Disk & DVD/CD-ROM Drives
Drive: C:
Free Space: 447.1 GB
Total Space: 476.9 GB
File System: NTFS
Model: ST3500418AS ATA Device
Drive: E:
Free Space: 238.7 GB
Total Space: 476.9 GB
File System: NTFS
Model: Seagate FreeAgentDesktop USB Device
Drive: D:
Model: HL-DT-ST BD-RE WH10LS30 ATA Device
Driver: c:\windows\system32\drivers\cdrom.sys, 6.01.7601.17514 (English), , 0 bytes
System Devices
Name: PCI standard PCI-to-PCI bridge
Device ID: PCI\VEN_1022&DEV_9608&SUBSYS_96011022&REV_00\3&18D45AA6&0&48
Driver: n/a
Name: PCI standard host CPU bridge
Device ID: PCI\VEN_1022&DEV_1200&SUBSYS_00000000&REV_00\3&18D45AA6&0&C0
Driver: n/a
Name: Standard OpenHCD USB Host Controller
Device ID: PCI\VEN_1002&DEV_4397&SUBSYS_50041458&REV_00\3&18D45AA6&0&98
Driver: n/a
Name: High Definition Audio Controller
Device ID: PCI\VEN_1002&DEV_4383&SUBSYS_A1021458&REV_40\3&18D45AA6&0&A2
Driver: n/a
Name: Standard Dual Channel PCI IDE Controller
Device ID: PCI\VEN_197B&DEV_2363&SUBSYS_B0001458&REV_02\4&1A75311A&0&01A8
Driver: n/a
Name: PCI standard PCI-to-PCI bridge
Device ID: PCI\VEN_1022&DEV_9605&SUBSYS_96011022&REV_00\3&18D45AA6&0&28
Driver: n/a
Name: ATI Radeon HD 4290
Device ID: PCI\VEN_1002&DEV_9714&SUBSYS_D0001458&REV_00\4&23F7DD16&0&2808
Driver: n/a
Name: Standard OpenHCD USB Host Controller
Device ID: PCI\VEN_1002&DEV_4397&SUBSYS_50041458&REV_00\3&18D45AA6&0&90
Driver: n/a
Name: GIGABYTE GBB36X Controller
Device ID: PCI\VEN_197B&DEV_2363&SUBSYS_B0001458&REV_02\4&1A75311A&0&00A8
Driver: n/a
Name: PCI standard PCI-to-PCI bridge
Device ID: PCI\VEN_1022&DEV_9602&SUBSYS_96021022&REV_00\3&18D45AA6&0&08
Driver: n/a
Name: High Definition Audio Controller
Device ID: PCI\VEN_1002&DEV_970F&SUBSYS_960F1458&REV_00\4&23F7DD16&0&2908
Driver: n/a
Name: Standard Enhanced PCI to USB Host Controller
Device ID: PCI\VEN_1002&DEV_4396&SUBSYS_50041458&REV_00\3&18D45AA6&0&B2
Driver: n/a
Name: D-Link DWA-556 Xtreme N PCIe Desktop Adapter
Device ID: PCI\VEN_168C&DEV_0024&SUBSYS_3A701186&REV_01\4&5B6B27D&0&0048
Driver: n/a
Name: PCI standard host CPU bridge
Device ID: PCI\VEN_1022&DEV_9601&SUBSYS_96011022&REV_00\3&18D45AA6&0&00
Driver: n/a
Name: PCI standard PCI-to-PCI bridge
Device ID: PCI\VEN_1002&DEV_43A0&SUBSYS_00001002&REV_00\3&18D45AA6&0&A8
Driver: n/a
Name: Standard Enhanced PCI to USB Host Controller
Device ID: PCI\VEN_1002&DEV_4396&SUBSYS_50041458&REV_00\3&18D45AA6&0&9A
Driver: n/a
Name: Realtek PCIe GBE Family Controller
Device ID: PCI\VEN_10EC&DEV_8168&SUBSYS_E0001458&REV_03\4&2BE2F00&0&0050
Driver: n/a
Name: PCI standard host CPU bridge
Device ID: PCI\VEN_1022&DEV_1204&SUBSYS_00000000&REV_00\3&18D45AA6&0&C4
Driver: n/a
Name: PCI standard ISA bridge
Device ID: PCI\VEN_1002&DEV_439D&SUBSYS_439D1002&REV_40\3&18D45AA6&0&A3
Driver: n/a
Name: Standard Enhanced PCI to USB Host Controller
Device ID: PCI\VEN_1002&DEV_4396&SUBSYS_50041458&REV_00\3&18D45AA6&0&92
Driver: n/a
Name: Texas Instruments 1394 OHCI Compliant Host Controller
Device ID: PCI\VEN_104C&DEV_8024&SUBSYS_10001458&REV_00\4&340CE6FE&0&70A4
Driver: n/a
Name: PCI standard host CPU bridge
Device ID: PCI\VEN_1022&DEV_1203&SUBSYS_00000000&REV_00\3&18D45AA6&0&C3
Driver: n/a
Name: Standard Dual Channel PCI IDE Controller
Device ID: PCI\VEN_1002&DEV_439C&SUBSYS_50021458&REV_40\3&18D45AA6&0&A1
Driver: n/a
Name: Standard Dual Channel PCI IDE Controller
Device ID: PCI\VEN_1002&DEV_4390&SUBSYS_B0021458&REV_40\3&18D45AA6&0&88
Driver: n/a
Name: NEC Electronics USB 3.0 Host Controller
Device ID: PCI\VEN_1033&DEV_0194&SUBSYS_50071458&REV_03\4&87DAECB&0&0028
Driver: n/a
Name: PCI standard host CPU bridge
Device ID: PCI\VEN_1022&DEV_1202&SUBSYS_00000000&REV_00\3&18D45AA6&0&C2
Driver: n/a
Name: Standard OpenHCD USB Host Controller
Device ID: PCI\VEN_1002&DEV_4399&SUBSYS_50041458&REV_00\3&18D45AA6&0&A5
Driver: n/a
Name: ATI I/O Communications Processor SMBus Controller
Device ID: PCI\VEN_1002&DEV_4385&SUBSYS_00000000&REV_41\3&18D45AA6&0&A0
Driver: n/a
Name: PCI standard PCI-to-PCI bridge
Device ID: PCI\VEN_1022&DEV_9609&SUBSYS_96011022&REV_00\3&18D45AA6&0&50
Driver: n/a
Name: PCI standard host CPU bridge
Device ID: PCI\VEN_1022&DEV_1201&SUBSYS_00000000&REV_00\3&18D45AA6&0&C1
Driver: n/a
Name: Standard OpenHCD USB Host Controller
Device ID: PCI\VEN_1002&DEV_4397&SUBSYS_50041458&REV_00\3&18D45AA6&0&B0
Driver: n/a
Name: ATI I/O Communications Processor PCI Bus Controller
Device ID: PCI\VEN_1002&DEV_4384&SUBSYS_00000000&REV_40\3&18D45AA6&0&A4
Driver: n/a
DirectShow Filters
DirectShow Filters:
WMAudio Decoder DMO,0x00800800,1,1,WMADMOD.DLL,6.01.7601.17514
WMAPro over S/PDIF DMO,0x00600800,1,1,WMADMOD.DLL,6.01.7601.17514
WMSpeech Decoder DMO,0x00600800,1,1,WMSPDMOD.DLL,6.01.7601.17514
MP3 Decoder DMO,0x00600800,1,1,mp3dmod.dll,6.01.7600.16385
Mpeg4s Decoder DMO,0x00800001,1,1,mp4sdecd.dll,6.01.7600.16385
WMV Screen decoder DMO,0x00600800,1,1,wmvsdecd.dll,6.01.7601.17514
WMVideo Decoder DMO,0x00800001,1,1,wmvdecod.dll,6.01.7601.17514
Mpeg43 Decoder DMO,0x00800001,1,1,mp43decd.dll,6.01.7600.16385
Mpeg4 Decoder DMO,0x00800001,1,1,mpg4decd.dll,6.01.7600.16385
ATI Ticker,0x00200000,0,1,Ticker.ax,
DV Muxer,0x00400000,0,0,qdv.dll,6.06.7601.17514
Color Space Converter,0x00400001,1,1,quartz.dll,6.06.7601.17713
WM ASF Reader,0x00400000,0,0,qasf.dll,12.00.7601.17514
Screen Capture filter,0x00200000,0,1,wmpsrcwp.dll,12.00.7601.17514
AVI Splitter,0x00600000,1,1,quartz.dll,6.06.7601.17713
VGA 16 Color Ditherer,0x00400000,1,1,quartz.dll,6.06.7601.17713
SBE2MediaTypeProfile,0x00200000,0,0,sbe.dll,6.06.7601.17528
Microsoft DTV-DVD Video Decoder,0x005fffff,2,4,msmpeg2vdec.dll,6.01.7140.0000
AC3 Parser Filter,0x00600000,1,1,mpg2splt.ax,6.06.7601.17528
StreamBufferSink,0x00200000,0,0,sbe.dll,6.06.7601.17528
MJPEG Decompressor,0x00600000,1,1,quartz.dll,6.06.7601.17713
MPEG-I Stream Splitter,0x00600000,1,2,quartz.dll,6.06.7601.17713
SAMI (CC) Parser,0x00400000,1,1,quartz.dll,6.06.7601.17713
VBI Codec,0x00600000,1,4,VBICodec.ax,6.06.7601.17514
MPEG-2 Splitter,0x005fffff,1,0,mpg2splt.ax,6.06.7601.17528
Closed Captions Analysis Filter,0x00200000,2,5,cca.dll,6.06.7601.17514
SBE2FileScan,0x00200000,0,0,sbe.dll,6.06.7601.17528
Microsoft MPEG-2 Video Encoder,0x00200000,1,1,msmpeg2enc.dll,6.01.7601.17514
Internal Script Command Renderer,0x00800001,1,0,quartz.dll,6.06.7601.17713
MPEG Audio Decoder,0x03680001,1,1,quartz.dll,6.06.7601.17713
MMACE ProcAmp,0x00200000,0,2,MMACEFilters.dll,
DV Splitter,0x00600000,1,2,qdv.dll,6.06.7601.17514
Video Mixing Renderer 9,0x00200000,1,0,quartz.dll,6.06.7601.17713
Microsoft MPEG-2 Encoder,0x00200000,2,1,msmpeg2enc.dll,6.01.7601.17514
ACM Wrapper,0x00600000,1,1,quartz.dll,6.06.7601.17713
Video Renderer,0x00800001,1,0,quartz.dll,6.06.7601.17713
MPEG-2 Video Stream Analyzer,0x00200000,0,0,sbe.dll,6.06.7601.17528
Line 21 Decoder,0x00600000,1,1,qdvd.dll,6.06.7601.17713
Video Port Manager,0x00600000,2,1,quartz.dll,6.06.7601.17713
Video Renderer,0x00400000,1,0,quartz.dll,6.06.7601.17713
VPS Decoder,0x00200000,0,0,WSTPager.ax,6.06.7601.17514
WM ASF Writer,0x00400000,0,0,qasf.dll,12.00.7601.17514
VBI Surface Allocator,0x00600000,1,1,vbisurf.ax,6.01.7601.17514
MMACE SoftEmu,0x00200000,0,2,MMACEFilters.dll,
File writer,0x00200000,1,0,qcap.dll,6.06.7601.17514
iTV Data Sink,0x00600000,1,0,itvdata.dll,6.06.7601.17514
iTV Data Capture filter,0x00600000,1,1,itvdata.dll,6.06.7601.17514
DVD Navigator,0x00200000,0,3,qdvd.dll,6.06.7601.17713
MMACE DeInterlace,0x00200000,0,2,MMACEFilters.dll,
Overlay Mixer2,0x00200000,1,1,qdvd.dll,6.06.7601.17713
AVI Draw,0x00600064,9,1,quartz.dll,6.06.7601.17713
RDP DShow Redirection Filter,0xffffffff,1,0,DShowRdpFilter.dll,
Microsoft MPEG-2 Audio Encoder,0x00200000,1,1,msmpeg2enc.dll,6.01.7601.17514
WST Pager,0x00200000,1,1,WSTPager.ax,6.06.7601.17514
MPEG-2 Demultiplexer,0x00600000,1,1,mpg2splt.ax,6.06.7601.17528
DV Video Decoder,0x00800000,1,1,qdv.dll,6.06.7601.17514
SampleGrabber,0x00200000,1,1,qedit.dll,6.06.7601.17514
Null Renderer,0x00200000,1,0,qedit.dll,6.06.7601.17514
MPEG-2 Sections and Tables,0x005fffff,1,0,Mpeg2Data.ax,6.06.7601.17514
Microsoft AC3 Encoder,0x00200000,1,1,msac3enc.dll,6.01.7601.17514
StreamBufferSource,0x00200000,0,0,sbe.dll,6.06.7601.17528
Smart Tee,0x00200000,1,2,qcap.dll,6.06.7601.17514
Overlay Mixer,0x00200000,0,0,qdvd.dll,6.06.7601.17713
AVI Decompressor,0x00600000,1,1,quartz.dll,6.06.7601.17713
AVI/WAV File Source,0x00400000,0,2,quartz.dll,6.06.7601.17713
Wave Parser,0x00400000,1,1,quartz.dll,6.06.7601.17713
MIDI Parser,0x00400000,1,1,quartz.dll,6.06.7601.17713
Multi-file Parser,0x00400000,1,1,quartz.dll,6.06.7601.17713
File stream renderer,0x00400000,1,1,quartz.dll,6.06.7601.17713
Microsoft DTV-DVD Audio Decoder,0x005fffff,1,1,msmpeg2adec.dll,6.01.7140.0000
StreamBufferSink2,0x00200000,0,0,sbe.dll,6.06.7601.17528
AVI Mux,0x00200000,1,0,qcap.dll,6.06.7601.17514
Line 21 Decoder 2,0x00600002,1,1,quartz.dll,6.06.7601.17713
File Source (Async.),0x00400000,0,1,quartz.dll,6.06.7601.17713
File Source (URL),0x00400000,0,1,quartz.dll,6.06.7601.17713
Infinite Pin Tee Filter,0x00200000,1,1,qcap.dll,6.06.7601.17514
Enhanced Video Renderer,0x00200000,1,0,evr.dll,6.01.7601.17514
BDA MPEG2 Transport Information Filter,0x00200000,2,0,psisrndr.ax,6.06.7601.17669
MPEG Video Decoder,0x40000001,1,1,quartz.dll,6.06.7601.17713
WDM Streaming Tee/Splitter Devices:
Tee/Sink-to-Sink Converter,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Video Compressors:
WMVideo8 Encoder DMO,0x00600800,1,1,wmvxencd.dll,6.01.7600.16385
WMVideo9 Encoder DMO,0x00600800,1,1,wmvencod.dll,6.01.7600.16385
MSScreen 9 encoder DMO,0x00600800,1,1,wmvsencd.dll,6.01.7600.16385
DV Video Encoder,0x00200000,0,0,qdv.dll,6.06.7601.17514
MJPEG Compressor,0x00200000,0,0,quartz.dll,6.06.7601.17713
Cinepak Codec by Radius,0x00200000,1,1,qcap.dll,6.06.7601.17514
Intel IYUV codec,0x00200000,1,1,qcap.dll,6.06.7601.17514
Intel IYUV codec,0x00200000,1,1,qcap.dll,6.06.7601.17514
Microsoft RLE,0x00200000,1,1,qcap.dll,6.06.7601.17514
Microsoft Video 1,0x00200000,1,1,qcap.dll,6.06.7601.17514
Audio Compressors:
WM Speech Encoder DMO,0x00600800,1,1,WMSPDMOE.DLL,6.01.7600.16385
WMAudio Encoder DMO,0x00600800,1,1,WMADMOE.DLL,6.01.7600.16385
IMA ADPCM,0x00200000,1,1,quartz.dll,6.06.7601.17713
PCM,0x00200000,1,1,quartz.dll,6.06.7601.17713
Microsoft ADPCM,0x00200000,1,1,quartz.dll,6.06.7601.17713
GSM 6.10,0x00200000,1,1,quartz.dll,6.06.7601.17713
CCITT A-Law,0x00200000,1,1,quartz.dll,6.06.7601.17713
CCITT u-Law,0x00200000,1,1,quartz.dll,6.06.7601.17713
MPEG Layer-3,0x00200000,1,1,quartz.dll,6.06.7601.17713
Audio Capture Sources:
Realtek Digital Input (Realtek ,0x00200000,0,0,qcap.dll,6.06.7601.17514
PBDA CP Filters:
PBDA DTFilter,0x00600000,1,1,CPFilters.dll,6.06.7601.17528
PBDA ETFilter,0x00200000,0,0,CPFilters.dll,6.06.7601.17528
PBDA PTFilter,0x00200000,0,0,CPFilters.dll,6.06.7601.17528
Midi Renderers:
Default MidiOut Device,0x00800000,1,0,quartz.dll,6.06.7601.17713
Microsoft GS Wavetable Synth,0x00200000,1,0,quartz.dll,6.06.7601.17713
WDM Streaming Capture Devices:
Realtek HD Digital input,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Realtek HD Audio CD input,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Realtek HD Audio Line input,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Realtek HD Audio Mic input,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Realtek HD Audio Stereo input,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
WDM Streaming Rendering Devices:
Realtek HDA HDMI Out,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Realtek HD Audio output,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Realtek HDA SPDIF Optical Out,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Realtek HDA SPDIF Out,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
BDA Network Providers:
Microsoft ATSC Network Provider,0x00200000,0,1,MSDvbNP.ax,6.06.7601.17514
Microsoft DVBC Network Provider,0x00200000,0,1,MSDvbNP.ax,6.06.7601.17514
Microsoft DVBS Network Provider,0x00200000,0,1,MSDvbNP.ax,6.06.7601.17514
Microsoft DVBT Network Provider,0x00200000,0,1,MSDvbNP.ax,6.06.7601.17514
Microsoft Network Provider,0x00200000,0,1,MSNP.ax,6.06.7601.17514
Multi-Instance Capable VBI Codecs:
VBI Codec,0x00600000,1,4,VBICodec.ax,6.06.7601.17514
BDA Transport Information Renderers:
BDA MPEG2 Transport Information Filter,0x00600000,2,0,psisrndr.ax,6.06.7601.17669
MPEG-2 Sections and Tables,0x00600000,1,0,Mpeg2Data.ax,6.06.7601.17514
BDA CP/CA Filters:
Decrypt/Tag,0x00600000,1,1,EncDec.dll,6.06.7601.17708
Encrypt/Tag,0x00200000,0,0,EncDec.dll,6.06.7601.17708
PTFilter,0x00200000,0,0,EncDec.dll,6.06.7601.17708
XDS Codec,0x00200000,0,0,EncDec.dll,6.06.7601.17708
WDM Streaming Communication Transforms:
Tee/Sink-to-Sink Converter,0x00200000,1,1,ksproxy.ax,6.01.7601.17514
Audio Renderers:
Realtek HDMI Output (ATI HDMI A,0x00200000,1,0,quartz.dll,6.06.7601.17713
Default DirectSound Device,0x00800000,1,0,quartz.dll,6.06.7601.17713
Default WaveOut Device,0x00200000,1,0,quartz.dll,6.06.7601.17713
DirectSound: Realtek Digital Output (Realtek High Definition Audio),0x00200000,1,0,quartz.dll,6.06.7601.17713
DirectSound: Realtek Digital Output(Optical) (Realtek High Definition Audio),0x00200000,1,0,quartz.dll,6.06.7601.17713
DirectSound: Realtek HDMI Output (ATI HDMI Audio),0x00200000,1,0,quartz.dll,6.06.7601.17713
Realtek Digital Output (Realtek,0x00200000,1,0,quartz.dll,6.06.7601.17713
Realtek Digital Output(Optical),0x00200000,1,0,quartz.dll,6.06.7601.17713
EVR Power Information
Current Setting: {5C67A112-A4C9-483F-B4A7-1D473BECAFDC} (Quality)
Quality Flags: 2576
Enabled:
Force throttling
Allow half deinterlace
Allow scaling
Decode Power Usage: 100
Balanced Flags: 1424
Enabled:
Force throttling
Allow batching
Force half deinterlace
Force scaling
Decode Power Usage: 50
PowerFlags: 1424
Enabled:
Force throttling
Allow batching
Force half deinterlace
Force scaling
Decode Power Usage: 0 -
Display a video stream (successives images)
Hello!
Thanks for looking after my post.
I try to display a video stream (successives images) in Java component.
With a simple swing component, it's not possible to display 25 fps for a 640x480 resolution.
With SWT, we arrive to display about 15 fps for a resolution 640x480 but the use of the CPU is very important.
Do you know an efficient system to display video stream?
Thanks.Firstly if you're loading images with Toolkit you'll nbeed to use MediaTracker (see the Javadoc for full and clear instructions).
Secondly, be aware of how long it takes to load image data, allocate the memory for it, and decode it. This is where you're going to suffer and it's the fundamental flaw in the plan of simulating video by flipping single frames: it's highly unlikely you'll manage it quickly enough. As above, 50ms is quite optimistic.
You could do your loading up-front and buffer a load of images - there are a few strategies you could use for this. But bear in mind that (a) this is going to be very memory hungry, and (b) if your image load time is greater than your frame display time you're always going to be fighting a losing battle. But it should work for very small animations.
Run yourself some tests: write yourself a simple test class which just loads an image in its main() method using a MediaTracker. It'll tell you how long loading the image takes. Of course, if you're doing it in an applet then you've got all sorts of other factors to consider and the load times will be high. -
Windows Media Player & Video Streaming
Hi, there!
Is it possible to send Video Streaming (using JMF) to
Windows Media Player? If so, how could I do that???
Thank You very much!!
CesarHi Jupiter,
Yes, JMF supports streaming media using the public standard RTP and RTSP protocols.
JMF supports both transmission and reception of media over RTP for a variety of media formats. For a list of the default formats supported, check:
http://java.sun.com/products/java-media/jmf/2.1.1/support-rtp.html
It also fully supports RTCP. Besides, JMF implements the "RTP Profile for Audio and Video Conferences with Minamal Control", RTP/AVP.
The front end GUI application, JMStudio can be used as a standalone application to transmit and receive RTP streams. To implement custom RTP applications using JMF as a framework, check out the RTP samples
on the solutions page: http://java.sun.com/products/java-media/jmf/2.1.1/solutions/index.html
OR you can refer this URL.
http://java.sun.com/products/java-media/jmf/2.1.1/faq-jmf.html#jmf2-rtp-features
I hope this will help you.
Thanks
Bakrudeen
Technical Support Engineer
Sun MicroSystems Inc, India -
Rtp video streaming issue from linux to windows
i am currently running a windows machine and linux machine on the same network connected by a linksy wrt45g router. i am trying to use avtransmit2.java and avreceive2.java to stream a video from one computer to the other and i can't get it to go from either win to linux or linux to win.
i am able to send information from one computer to the other through an objectoutputstream, but i have been unsuccessful in getting video to go through rtp from one computer to the other.
anyone have any ideas? it is starting to get really frustrating. i have been able to do something similar using vlc, but the avreceive and avtransmit won't work. i am using a new configuration, and have been successfull with the same code previous times
thanks
bdYou can use MediaPlayerLauncher or MediaElement control
https://msdn.microsoft.com/en-us/library/windows/apps/hh394004%28v=vs.105%29.aspx
https://msdn.microsoft.com/en-us/library/windows/apps/ff769551(v=vs.105).aspx
Gaurav Khanna | Microsoft .NET MVP | Microsoft Community Contributor -
Using sockets to relay video stream
Hi there,
I've been working with java for 4 years now, and I never had troubles making the applications I wanted with it...since my last project :(
I hope you, gurus from the java community forum, can help me sort this out, but let me explain it to you:
I'd like to stream video content (let's say from a webcam) to several spectators. But my upload bandwidth (ADSL line) is limited to 512kbps, which is far from enough to send a video streaming (with a bitrate of ~400kbps) to 10 or more viewers.
That's why I decided to rent a distant server (with a bandwidth of 5Mbps download/upload), and make a java application run on it, which would be able to broadcast the stream to all the viewers.
So my computer (connected to adsl) captures the video from the webcam, sends it via socket to the rented server, which broadcasts the video to all the spectators. If no video is sent to the rented server, then it should broadcast local files to the spectators.
Here is a schema of the project so you understand easily (my english is not as good as I'd like it to be, so you may not understand with words only):
http://www.bf-stream.com/schema1.gif
My application runs quite well with 5 spectators, but as soon as more viewers come to see the video, it starts hanging, and all the viewers suffer lags and buffering, which is not exactly what I expected...
Of course, I checked the administration interface on the rented server to see if this was due to a cpu/ram/bandwitdh problem. With no success: with 10 viewers connected, the app uses less than 1% of the cpu power, something like 200kb of RAM, and a bandwidth of 3-4Mbps (which is still under the actual bandwidth capacity of the server).
That's why I came to the conclusion that my java app was not as good as I thought, and decided to show it to you, so you can help me make it better.
So here is a schema showing the classes and their interactions:
http://www.bf-stream.com/schema2.gif
And here are the sources of the classes:
StreamRelay.java:
package com.RR4;
import java.net.Socket;
import java.util.Vector;
import java.util.Observable;
import java.util.Observer;
* StreamRelay:
* Main class controlling every aspects of the stream
* (live content, or files read from hard disk)
public class StreamRelay extends Observable implements Observer {
static public String VERSION = "0.5";
static public int BUFFER_SIZE = 16;
private StreamServer streamServer;
private LiveServer liveServer;
LocalFile localFile;
Vector clients;
boolean streamFromSocket;
public StreamRelay(int livePort, int relayPort) {
streamFromSocket = false;
// clients: vector containing every StreamClient connected
clients = new Vector();
// localFile: class reading local files when no live is sent to the relay
localFile = new LocalFile(this);
new Thread(localFile).start();
// streamServer: server listening for new StreamClient
streamServer = new StreamServer(this, relayPort);
new Thread(streamServer).start();
// liveServer: server listening for new sources for live content
liveServer = new LiveServer(this, livePort);
new Thread(liveServer).start();
* addClient: adds new StreamClient to 'clients' vector (a StreamClient is a 'spectator')
public void addClient(Socket clientSocket) {
StreamClient client = new StreamClient(this, clientSocket);
* removeClient: removes a StreamClient from 'clients' vector
public void removeClient(int index) {
clients.remove(index);
* update: updates every StreamClient (which are all Observers of StreamRelay)
public void update(Observable observable, Object obj) {
if ((observable.getClass().toString().indexOf("LocalFile")!=-1&&!streamFromSocket)||(observable.getClass().toString().indexOf("LiveStream")!=-1)) {
this.notifyObservers( (byte[]) obj);
this.setChanged();
public static void main(String[] args) {
new StreamRelay(8000, 8080);
LocalFile.java:
package com.RR4;
import java.util.Observable;
import java.io.*;
* LocalFile: class reading local file when no live content is sent to the relay
public class LocalFile extends Observable implements Runnable {
// filenames is an array containing a list of files to be read when no live content is sent
private String[] filenames = {
"file1",
"file2"
private InputStream stream;
boolean streamOpened;
private StreamRelay parent;
int fileIndex;
// Constructor: initialises LocalFile
// sets fileIndex to 0, and sets main StreamRelay as Observer
public LocalFile(StreamRelay parent) {
this.parent = parent;
fileIndex = 0;
this.addObserver(parent);
initStream();
* initStream: initialises stream to read the next file in 'filenames' array
public void initStream() {
try {
stream = new BufferedInputStream(new FileInputStream(filenames[fileIndex]), StreamRelay.BUFFER_SIZE);
streamOpened = true;
fileIndex++;
if (fileIndex==filenames.length)
fileIndex = 0;
} catch (Exception exp) {
exp.printStackTrace();
streamOpened = false;
* run: main loop of the class.
* the file is actually read: a buffer of BUFFER_SIZE is filled and sent to
* the observer (StreamRelay)
public void run() {
byte[] buffer = new byte[StreamRelay.BUFFER_SIZE];
byte[] bufferToSend;
boolean quit = false;
int actualBufferSize = 0;
while (!quit) {
try {
this.setChanged();
// Bytes are read until the buffer is actually filled with BUFFER_SIZE bytes
// Only then is it sent to the observer...
while (streamOpened && ((actualBufferSize = stream.read(buffer, 0, StreamRelay.BUFFER_SIZE)) > 0)) {
if (parent.clients.size()>0 && (!parent.streamFromSocket)) {
if (actualBufferSize<StreamRelay.BUFFER_SIZE) {
bufferToSend = new byte[actualBufferSize];
System.arraycopy(buffer, 0, bufferToSend, 0, actualBufferSize);
this.notifyObservers(bufferToSend);
} else
this.notifyObservers(buffer);
this.setChanged();
} else {
try { Thread.sleep(100); } catch (Exception exp) {}
} catch (Exception exp) {
exp.printStackTrace();
try { stream.close(); } catch (Exception exp) {}
initStream();
StreamServer.java:
package com.RR4;
import java.net.ServerSocket;
public class StreamServer extends Thread {
private ServerSocket serverSocket;
private boolean socketOpened;
private StreamRelay parent;
* StreamServer: server listening for new StreamClient
public StreamServer(StreamRelay parent, int relayPort) {
this.parent = parent;
try {
serverSocket = new ServerSocket(relayPort);
socketOpened = true;
} catch (Exception exp) {
exp.printStackTrace();
socketOpened = false;
public void run() {
try {
while (socketOpened) {
parent.addClient(serverSocket.accept());
} catch (Exception exp) {
exp.printStackTrace();
StreamClient.java:
package com.RR4;
import java.net.Socket;
import java.util.Observer;
import java.util.Observable;
import java.io.*;
* StreamClient: class representing spectators connected to view the video content
* whether it is live content, or local files
public class StreamClient implements Observer {
private Socket socket;
private OutputStream outStream;
private boolean connected = true;
private StreamRelay parent;
public StreamClient(StreamRelay parent, Socket socket) {
this.parent = parent;
this.socket = socket;
try {
// initialises OutputStream from socket
outStream = socket.getOutputStream();
} catch (Exception exp) {
try { outStream.close(); } catch (Exception e) {}
try { socket.close(); } catch (Exception e) {}
exp.printStackTrace();
connected = false;
if (connected) {
// if initializing of OutputStream didn't fail
// add this class to StreamBroadcast 'clients' vector
// and add this class to StreamRelay observers
parent.clients.add(this);
parent.addObserver(this);
* update: actually send read bytes to the client
public void update(Observable observable, Object obj) {
try {
outStream.write( (byte[]) obj);
outStream.flush();
} catch (Exception exp) {
// if read bytes couldn't be sent
// remove this client from clients list and observers of StreamRelay
// and try to close OutputStream and Socket
connected = false;
try { parent.deleteObserver(this); } catch (Exception e) {}
try { parent.clients.remove(this); } catch (Exception e) {}
try { outStream.close(); } catch (Exception e) {}
try { socket.close(); } catch (Exception e) {}
LiveServer.java:
package com.RR4;
import java.net.ServerSocket;
* LiveServer:
* SocketServer listening to new 'Live streams'
public class LiveServer extends Thread {
private ServerSocket liveSocket;
private boolean liveServerOpened;
private StreamRelay parent;
public LiveServer(StreamRelay parent, int livePort) {
this.parent = parent;
try {
liveSocket = new ServerSocket(livePort);
liveServerOpened = true;
} catch (Exception exp) {
exp.printStackTrace();
liveServerOpened = false;
public void run() {
LiveStream liveStream;
try {
while (liveServerOpened) {
liveStream = new LiveStream(parent, liveSocket.accept());
new Thread(liveStream).start();
} catch (Exception exp) {
exp.printStackTrace();
LiveStream.java:
package com.RR4;
import java.util.Observable;
import java.io.*;
import java.net.Socket;
* LiveStream:
* Socket receiving live content from another distant computer
* to display it instead of the local files.
public class LiveStream extends Observable implements Runnable {
private InputStream stream;
boolean streamOpened;
private StreamRelay parent;
public LiveStream(StreamRelay parent, Socket socket) {
this.parent = parent;
this.addObserver(parent);
try {
stream = new BufferedInputStream(socket.getInputStream(), StreamRelay.BUFFER_SIZE);
streamOpened = true;
} catch (Exception exp) {
exp.printStackTrace();
streamOpened = false;
public void run() {
byte[] buffer = new byte[StreamRelay.BUFFER_SIZE];
byte[] bufferToSend;
int actualBufferSize = 0;
try {
this.setChanged();
// Bytes are read until the buffer is actually filled with BUFFER_SIZE bytes
// Only then is it sent to the observer...
while (streamOpened && ((actualBufferSize = stream.read(buffer, 0, StreamRelay.BUFFER_SIZE)) > 0)) {
if (!parent.streamFromSocket)
parent.streamFromSocket = true;
if (parent.clients.size() > 0) {
if (actualBufferSize<StreamRelay.BUFFER_SIZE) {
bufferToSend = new byte[actualBufferSize];
System.arraycopy(buffer, 0, bufferToSend, 0, actualBufferSize);
this.notifyObservers(bufferToSend);
} else
this.notifyObservers(buffer);
this.setChanged();
} else
try { Thread.sleep(100); } catch (Exception exp) {}
} catch (Exception exp) {
exp.printStackTrace();
} finally {
try { stream.close(); } catch (Exception exp) {}
this.deleteObserver(parent);
parent.streamFromSocket = false;
}For your information, I uses NSV/VP6 vbr as video codec (but this should have no incidence on it, since the app only takes the video stream from a socket and broadcasts it to other sockets, without analysing it or modifying it). And the java app is hosted on a Celeron 2.6 GHz, 128MB RAM.
I really hope you'll be able to help me with this project, as it is really important to me...
I've been trying several Stream types available with the JDK but I hadn't any success... I've also been playing with the BUFFER_SIZE parameter, unsuccessfully too...
Anyway, thanks in advance for reading me so far... and I hope, for helping me... I know the java community is strong, and I hope I won't have to make it with C or C++ :(Hi again :)
I've been focusing on the local part of the stream (no live video, just playing local files and sending them to clients) using NIO.
NIOStreamRelay.java:
package com.RR4;
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.channels.spi.*;
import java.net.*;
import java.util.*;
public class NIOStreamRelay {
static int BUFFER_SIZE = 1024;
LocalFile localFile;
Vector clients;
public NIOStreamRelay() throws IOException {
localFile = new LocalFile(this);
new Thread(localFile).start();
clients = new Vector();
acceptConnections();
public void acceptConnections() throws IOException {
// Selector for incoming requests
Selector acceptSelector = SelectorProvider.provider().openSelector();
// Create a new server socket and set to non blocking mode
ServerSocketChannel ssc = ServerSocketChannel.open();
ssc.configureBlocking(false);
// Bind the server socket to the local host and port
InetAddress lh = InetAddress.getLocalHost();
InetSocketAddress isa = new InetSocketAddress(lh, 8080);
ssc.socket().bind(isa);
// Register accepts on the server socket with the selector. This
// step tells the selector that the socket wants to be put on the
// ready list when accept operations occur, so allowing multiplexed
// non-blocking I/O to take place.
SelectionKey acceptKey = ssc.register(acceptSelector, SelectionKey.OP_ACCEPT);
int keysAdded = 0;
// Here's where everything happens. The select method will
// return when any operations registered above have occurred, the
// thread has been interrupted, etc.
while ((keysAdded = acceptSelector.select()) > 0) {
// Someone is ready for I/O, get the ready keys
Set readyKeys = acceptSelector.selectedKeys();
Iterator i = readyKeys.iterator();
// Walk through the ready keys collection and process date requests.
while (i.hasNext()) {
SelectionKey sk = (SelectionKey)i.next();
i.remove();
// The key indexes into the selector so you
// can retrieve the socket that's ready for I/O
ServerSocketChannel nextReady = (ServerSocketChannel)sk.channel();
// Accept the date request and send back the date string
Socket s = nextReady.accept().socket();
OutputStream socketStream = s.getOutputStream();
StreamClient newClient = new StreamClient(socketStream, this);
localFile.addObserver(newClient);
clients.add(newClient);
public static void main(String[] args) {
try {
NIOStreamRelay streamRelay = new NIOStreamRelay();
} catch (Exception e) {
e.printStackTrace();
LocalFile.java:
package com.RR4;
import java.util.Observable;
import java.io.*;
* LocalFile: class reading local file when no live content is sent to the relay
public class LocalFile extends Observable implements Runnable {
// filenames is an array containing a list of files to be read when no live content is sent
private String[] filenames = {
"test.nsv",
"test2.nsv"
private InputStream stream;
boolean streamOpened;
int fileIndex;
NIOStreamRelay parent;
// Constructor: initialises LocalFile
// sets fileIndex to 0, and sets main StreamRelay as Observer
public LocalFile(NIOStreamRelay parent) {
this.parent = parent;
fileIndex = 0;
initStream();
* initStream: initialises stream to read the next file in 'filenames' array
public void initStream() {
try {
stream = new BufferedInputStream(new FileInputStream(filenames[fileIndex]), NIOStreamRelay.BUFFER_SIZE);
streamOpened = true;
fileIndex++;
if (fileIndex==filenames.length)
fileIndex = 0;
} catch (Exception exp) {
exp.printStackTrace();
streamOpened = false;
* run: main loop of the class.
* the file is actually read: a buffer of BUFFER_SIZE is filled and sent to
* the observer (StreamRelay)
public void run() {
byte[] buffer = new byte[NIOStreamRelay.BUFFER_SIZE];
byte[] bufferToSend;
boolean quit = false;
int actualBufferSize = 0;
while (!quit) {
try {
this.setChanged();
// Bytes are read until the buffer is actually filled with BUFFER_SIZE bytes
// Only then is it sent to the observer...
while (streamOpened && ((actualBufferSize = stream.read(buffer, 0, NIOStreamRelay.BUFFER_SIZE)) > 0)) {
if (parent.clients.size() > 0) {
if (actualBufferSize<NIOStreamRelay.BUFFER_SIZE) {
bufferToSend = new byte[actualBufferSize];
System.arraycopy(buffer, 0, bufferToSend, 0, actualBufferSize);
this.notifyObservers(bufferToSend);
} else
this.notifyObservers(buffer);
this.setChanged();
} else {
try { Thread.sleep(100); } catch (Exception exp) {}
} catch (Exception exp) {
exp.printStackTrace();
try { stream.close(); } catch (Exception exp) {}
initStream();
StreamClient.java:
package com.RR4;
import java.io.*;
import java.net.*;
import java.util.*;
public class StreamClient implements Observer {
OutputStream out;
NIOStreamRelay parent;
public StreamClient(OutputStream out, NIOStreamRelay parent) {
this.out = out;
this.parent = parent;
public void update(Observable observable, Object obj) {
try {
out.write( (byte[]) obj);
out.flush();
} catch (Exception exp) {
// if read bytes couldn't be sent
// remove this client from clients list and observers of StreamRelay
// and try to close OutputStream and Socket
try { parent.localFile.deleteObserver(this); } catch (Exception e) {}
try { parent.clients.remove(this); } catch (Exception e) {}
try { out.close(); } catch (Exception e) {}
}Does it look better to you?
I know I'm still using single threading, but as the IO should be non-blocking, I guess it should be better.
Furthermore, I tried it locally, and was able to launch 30+ clients without buffering problems (huh, ok, my cpu here is only a 1.6GHz, so the display was a bit lagguy, but it didn't seem to buffer at all)
Maybe you are looking for
-
[SRP527w] NAT Traversal not available in VPN options!!!
Hi, I'm so disappointed to find such a light and incomplete VPN menu on the SRP527w. As a Cisco certified network engineer, I'm testing it because my company needs about twenty ADSL+ 3G Backup router, and Cisco seemed to offer the best solution. We n
-
Cisco ASA 8.2. Destination NAT (network - network)
Hi Guys, Could you tell me if I can do destination NAT (class C network => class C network) on Cisco ASA running 8.2? (or another version). For example, will destination NAT like this work: static (inside,outside) 8.2.2.0 10.10.8.0 netmask 255.255.25
-
Having problem in visible/hidden
I am using same script under two subform section 1 and section 2. When click on button under section1, this script is working well, but section 2 not working. Again if I click on the button section 2, it is working well, but section 1 not working the
-
Sorting & Organizing in Preview
Hi- In Tiger I was able to open multiple images in Preview, and them sort them by name, modified date, etc. In Leopard I can not seem to change the default method by which images are ordered. It doesn't appear that there is any type of view menu in t
-
Okay, I have no clue about java period. just starting to learn, one of our servers at work is giving me a Java.Lang Unsupportedclassverion error. This was dropped in my and I really have not a clue to what is causing this error.