back to top

Darktable vs Lightroom (Is Darktable Really Just as Good?)

A- A+

Subscribe Below to Download the Article Immediately

You can also select your interests for free access to our premium training:

Your privacy is safe. I will never share your information.

I’m always on the lookout for a good, free photo editing program. I’m a Lightroom user, but not all of us want to be dialled into Adobe’s subscription package. And I can’t always get the results I want in Lightroom.

In this review, I set out to see what Darktable 3.0 has to offer and whether it is a good Lightroom alternative.

The Eiffel tower at evening time
Image edited with Darktable.

What Is Darktable?

Darktable is an open-source photo post-processing program. It is a free Lightroom alternative. It supports RAW files from over 400 different cameras and opens a wide range of file types.

Like Lightroom, it is non-destructive photo editing software. This means your original file is never changed.

The software manages your photos through a module called Lighttable. The Darkroom module lets you edit photos.

Open source means that the software is downloadable on many operating systems. This includes Windows, IOS, and Linux. I’m a Mac user, so I’m looking at the IOS version.

Currently, there are 11 platforms listed on the Darktable website available for download.

The Darktable Interface

In many ways, Darktable looks and feels like Lightroom. Though there are some notable differences, which we’ll talk about later in the article.

The basic layout will be familiar to Lightroom users. There is a central screen flanked by the left and right columns. These add functionality depending on the module. There is also an optional filmstrip below the central screen. The filmstrip may be image thumbnails or a timeline of when you took the images.

Screenshot of Darktable's Darkroom module.
Screenshot of Darktable’s Darkroom module. The image is shown on a central screen. Processing tools and a histogram are in the righthand column. History and other functions are in the lefthand column. A filmstrip below shows other like images.

Like Lightroom, the software is divided into modules.

Lighttable is functionally like Lightroom’s Library module. This is where you can import, cull, and organise your files.

The Darkroom module is for image editing. Like Lightroom, changes are made using sliders to dial more or less of an effect.

There are further modules called Slideshow, Map and Printing. These modules are also in Lightroom.

Darktable includes a Tethering module. This allows you to connect your camera directly into Darktable. When you press the shutter button, the image shows up immediately in the program. Lightroom also allows you to tether your camera directly to the program. But the function is embedded under the File menu rather than a standalone module.

In this review, I’ll focus on the Lighttable and the Darkroom modules. These are alternatives to Lightroom’s Library and Develop modules.

Lighttable vs Lightroom Library

Screenshot of Lightroom's Library module interface.
Screenshot of Lightroom’s Library module interface. Catalogues, collections, and locations are in the lefthand column. Keywords and other metadata are in the righthand column.
Screenshot of Darktable's Lighttable module interface.
Screenshot of Darktable’s Lighttable module interface. Metadata and collections are in the lefthand column. Functions like tagging, metadata editor, and export options are in the righthand column.

Importing images into Darktable was similar to Lightroom. There is an IMPORT option on the top left of the Lighttable module. If importing from an SD card, you need to know exactly where your files are located.

Like Lightroom, Darktable only catalogues your images in the program. The files aren’t moved from where they are located on your hard drive.

Lightroom allows me to define an import location. I can move the files to different hard drives or folders within the software. I haven’t yet figured out if this is possible in Lighttable.

When importing from my camera’s SD card, the files remain stored on the SD card. I first had to copy my files from my camera’s SD card onto my hard drive and then import using Lighttable.

The import speed seemed similar to Lightroom.

Once I imported my files, I could rate the files and add keywords (tags) and other metadata as I would in Lightroom.

There are hotkeys for ratings and colour codings to speed up the process. I wasn’t as fast with my culling and keywording in Lighttable as I am in Lightroom. But this may simply be my familiarity with the software. The tools I commonly use in Lightroom seem to be available in Darktable.

The tagging function seemed a bit basic. I couldn’t find a way of tagging many images at once or copying tags across images. But that’s not to say this function doesn’t exist – just that I couldn’t find it.

One cool feature I stumbled across in Lighttable was the ability to find focus points in your image.

Pressing the W key allows you to see the image full screen. Pressing Cntl + W adds focus points. This could be really useful in deciding which images to keep.

The Lighttable module seems a usable alternative to Lightroom’s Library module.

Screenshot of Darktable's Lighttable screen.
Screenshot of Darktable’s Lighttable screen. The parts of the image in focus are shown with a dashed red shape. Because I was shooting at f/8.0, most of the scene is in focus.

Darkroom vs Develop

Editing tools in Darktable are called “image operation modules”. I found this term confusing, so I will use the term “tools” to refer to features that change your image. In the version I was using, there were 61 tools.

Commonly used tools are divided into groups designated by icons under the histogram. The groups are Basic, Tone, Color, Correction, and Effects. There is a Favorites group (star icon) that lets you place commonly used tools together. This is very useful in targeting your often-used tools. The tools included in each group seem a little arbitrary.

There’s a search function, which let me get to the tools faster.

Screenshot of Darktable's Darkroom module showing Favorites group.
Screenshot of Darktable’s Darkroom module showing Favorites group.

Many of the tools will be familiar to Lightroom users. There is exposure control, white balance, tone curve, sharpen, and vignetting tools.

Other tools will be familiar to Photoshop users. These include levels, color balance, highpass, liquify, and perspective correction.

Finally, there are a few new tools that I didn’t recognise from either Adobe program. I had fun playing with bloom, framing, and zone system.

  • Bloom adds a soft light sphere over the entire image. It’s a bit like the Orton Effect.
  • Framing lets me create a frame around my image. This is only available in Lightroom’s Print module.
  • The zone system tool lets me edit as Ansel Adams might. I can selectively adjust nine zones of light. This tool works on colour as well as black and white images.
A beautiful flowing waterfall photo with green border
Processing photo using tools like Bloom, Framing, and the Zone System.

One cool tool is denoise (profiled). This tool detects which camera you were using and adjusts noise based on ISO.

And there are blend modes for nearly every processing tool.

Image-Edit Comparison

I did a few basic edits that would allow me to compare the programs’ photo editing results directly. I kept the edits basic to allow as much image-to-image comparison as possible. Here are the edits in order:

  1. Lens correction
  2. Crop to 5:4 ratio
  3. Temperature 5,500
  4. Contrast +30 (+0.30)
  5. Highlights -45
  6. Vibrance +25 (25%)
  7. Exposure +.25

This is a very rough photo edit but allowed me to compare the programs’ output. There were times Darktable tried to add other corrections. But I tried to keep the edits as fundamental as possible.

Most of the differences I see came from the white balance edit, also, in the highlights. Darktable has a highlight reconstruction tool. This seemed to fix the blown-out highlights better than lowering highlights.

Eiffel tower diptych side by side editing comparison between Darktable (left) with Lightroom (right).
Image-edit comparison between Darktable (left) with Lightroom (right).

Darkroom is a viable alternative to Lightroom’s Develop module.

Darktable Usability Issues

There are a lot of things I liked about Darktable. Unfortunately, I did have some issues with Darktable repeatedly crashing. This marred an otherwise pleasant discovery.

In general, I found Darktable easy to use, but I had to refer to the user manual quite a bit for help. There are a lot of functions that are accessed with keyboard shortcuts. You’re not going to stumble upon these. You need to know what they are.

The manual is very easy to read. But, the search function went to a 404 screen. This limited usability. I still need help figuring out how to reject an image during the culling process.

Darktable and Lightroom have a lot in common. I drag sliders left and right to increase or decrease the amount of the effect. Sometimes the values on the sliders didn’t seem to make sense, or they covered too much ground. If I only want to tweak an effect by a point or two, it’s very difficult if the slider lets me go wild with the effect. It was easy to over- or undercook a setting.

I miss the ability to enter a value directly rather than use the slider. This was frustrating when I wanted, for instance, an exact white balance.

The History panel befuddled me. Like Lightroom, Darktable is a non-destructive editor. At any point, I should be able to return to a history state and start again. But sometimes I couldn’t by-pass the steps I wanted to erase. Nor could I directly delete them. I did eventually figure out how to toggle effects on-and-off in the active module group.

Plus, the Undo command seemed to have a mind of its own. Sometimes it didn’t seem to work. Other times it went back in unpredictable partial steps.

I’m sure most if not all of these usability issues would disappear with more time in the program.

Finally, I found Darktable took a while to render my edits. I’ve upgraded my Mac in response to Lightroom-lag, but I still had to wait to see the change.

Two things might be confusing when using the tools in the Darkroom module.

Tool Organisation

First, the tools are organised in unexpected ways. For instance, saturation is not located in the same place as vibrance. Also, different tools can control a similar edit.

For instance, Darkroom gives me four tools to control contrast. There are contrast options embedded under other sliders, but let’s focus on these four. Darktable seems to take this common post-processing edit to a new level.

  1. Contrast as part of the contrast, brightness & saturation tool. This seems to be the general overall contrast slider that we’d find in Lightroom’s Basic panel.
  2. The local contrast tool lets me adjust contrast for highlights, shadows, mid tones, and details.
  3. Color contrast works like color balance in Photoshop.
  4. The contrast equalizer tool is way cool, though I don’t fully understand what it does. In a way, it works similarly to the tone curve. It allows me to change relationships between luma, chroma and edges.
Screenshot of Darktables contrast equalizer tool
Contrast equalizer tool lets me change relationships between luma, chroma, and edges.

In Lightroom, I use many sliders to control contrast, but most of these are in the Basic panel.

It’s a different way of thinking about contrast. In Darktable, there is probably an underlying theory that determines which tools should be together. But I wasn’t always able to predict where I would find a tool. This negatively impacts usability.

Having said that, I’d probably get used to the tool organisation.

Too Much Choice in Control

Secondly, Darkroom gives you a lot of control. I mean a LOT of control. This is not a negative for an advanced photographer. But for a beginning photographer, the amount of control may be overwhelming.

I mentioned the cool tool denoise (profiled) tool earlier. Three other tools adjust noise: denoise (non-local means), denoise (bilateral filter), and raw denoise.

For each, there are many options. In denoise (profiled), there are seven sliders besides to the sensor/ISO profile list. If I want to clean my photo up a bit, I wouldn’t know where to start with all these choices.

This is a good example of “over choice”. Because I couldn’t decide among all the options, I chose to make no change at all.

Screenshot of Darktables denoise panel
Denoise (profiled) detects my camera and ISO and adjusts for noise in the image.

Missing Tools

A few tools are missing in Darktable that are included in Lightroom. It may be that I have yet to find the tools or know how to use them. So, this may be more of a usability issue.

I can’t yet find a tool like the HSL panel in Lightroom. I don’t know how to alter colours selectively.

I also struggled with the mask manager. This is equal to the radial filter and gradient tools in Lightroom. I use these tool in Lightroom a lot for dodging and burning.

There is also a spot removal tool, but I have not yet figured out how to use it.

Even with a good user manual, some tools aren’t very user-friendly.

Is Darktable as Good as Lightroom?

Let’s get to the key question I set out to answer in this article. Is Darktable as good as Lightroom?

The short answer is – Yes.

In fact, Darktable may be better than Lightroom. It has more tools and more precise manipulations of the elements of those tools. Longtime Lightroom users may wonder why Adobe hasn’t included some of these features. I’m voting for Adobe to add the denoise (profiled) and the framing options immediately!

The processing tools are not always intuitive. But if you work with this software for a while, you’ll figure out where things are.

Is Darktable is as easy to use as Lightroom?

This is a different question. Darktable has a learning curve. There are not as many video tutorials to help teach you how to use the program. The user manual is easy to understand, though you may need some processing background.

Many of the tools are broken down into component parts. You can control these independently. This is great if you’re an advanced photographer. But it was easy for me to go overboard and make a poorly processed photo.

This may not be the best tool for a beginning photographer.

Conclusion

Bottom line, this powerful program has a lot of bang for the buck, especially since the program is free.

Darktable is a good Lightroom alternative. If you don’t want to buy into Adobe’s subscription model or use Linux, then this program may be for you.

In comparing Darktable vs Lightroom, the interface is similar. Both have a file management system, and both include image processing tools. Darktable comes out ahead in the number of tools available. But, with more functionality comes more complexity.

This is especially the case if you’re the type of person who reads manuals to learn how to use a program. For intuitive users like myself, Darktable may be a bit more frustrating at first.

The tools are there. It’s a matter of learning how to use them.

To become a Lightroom pro, check out our Effortless Editing with Lightroom course! 

Save this article to your Pinterest profile to access it later!
Loading comments...
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]